Está en la página 1de 6

Funciones

function_name Es el nombre de la función a ser creada.


OR REPLACE Especifica OR REPLACE para volver a crear la función si ya existe.
Funciones. Utilice esta cláusula para cambiar la definición de una función existente
Sintaxis: sin tener que eliminarla, re-crearla, ni otorgar los privilegios de objeto que
CREATE [ OR REPLACE ] FUNCTION [ schema. ]function_name ya poseía. Si se re-define una función, entonces la Base de
[ (argument1 [ mode1 ] Datos Oracle la recompila.
[ NOCOPY ] datatype argument Es el nombre dado a los parámetros de la función. Cada argumento está
[, argument2 [ mode2 ] asociado con un modo y tipo de datos. Una función puede tener cualquier
[ NOCOPY ] datatype número de argumentos separados por comas.
]... mode Tipo de argumento:
) IN (default) -- De entrada.
] OUT -- De salida.
RETURN datatype IN OUT -- De entrada y salida
[ { invoker_rights_clause datatype Es el tipo de dato del parámetro. El tipo de dato de los parámetros no
| DETERMINISTIC puede tener el tamaño explícito; en cambio, utilizar %TYPE.
| parallel_enable_clause NOCOPY Especifica NOCOPY para pedir a la Base de Datos que pase este
} argumento tan rápido como sea posible. Esta cláusula puede mejorar
[ invoker_rights_clause significativamente el rendimiento cuando se pasa un valor grande (un
| DETERMINISTIC Record, index-by table, o un VARRAY) a un parámetro OUT o IN-OUT .
| parallel_enable_clause Los valores de los parámetros IN se pasan siempre como NOCOPY.
]...
] RETURN Es el tipo de dato del valor de retorno de la función. Esta cláusula es
{ { AGGREGATE | PIPELINED } requerida debido a que cada función debe devolver un valor. El valor de
USING [ schema. ]implementation_type retorno puede tener cualquier tipo de datos PL/SQL excepto
| [ PIPELINED] booleano(BOOLEAN).
{ IS | AS } invoker_rights_clause El invoker_rights_clause le permite especificar si la función se ejecuta con
{ pl/sql_function_body } los privilegios y en el esquema del usuario que lo posee (owner) o con
}; los privilegios y en el esquema del usuario que lo invoca.

Esta cláusula también determina la forma que la Base de Datos resuelve


los nombres externos en consultas, operaciones DML, y sentencias
ing Alexander Ramirez C de SQL dinámico en la función.
Ejemplo: AUTHID { CURRENT_USER | DEFINER }
Funciones
DETERMINISTIC Especificar DETERMINISTIC para indicar que la función
devuelve el mismo valor de resultado cada vez que se llama
con los mismos valores en sus argumentos.

Debe especificar esta palabra clave si su intención es de


llamar a la función en la expresión de un índice basado en
funciones o de una consulta de una vista materializada
marcada como REFRESH FAST o ENABLE QUERY
REWRITE.
PARALLEL_ENABLE Es un indicio de optimización que indica que la función se
puede ejecutar desde un servidor en paralelo de una
operación de consulta en paralelo. La función no debe
utilizar el estado de sesión, como variables de paquete, ya
que dichas variables no son necesariamente compartidas
entre los servidores de ejecución en paralelo.

PIPELINE Especificar PIPELINE para instruir a Oracle que retorne los


resultados de una función de tabla de forma iterativa. Una
función de tabla devuelve un tipo de colección (una tabla
anidada o VARRAY). Se consulta la tabla de funciones
mediante el uso de la palabra clave TABLE antes de que el
nombre de la función en la cláusula FROM de la consulta.

AGGREGATE USING Especificar AGGREGATE USING para identificar esta


función como una función de agregado, o una que evalúa un
grupo de filas y devuelve una sola fila. Puede especificar las
funciones de agregado en la lista select, cláusula HAVING, y
la cláusula ORDER BY.
pl/sql_subprogram_body Es el bloque de PL/SQL que ejecuta la acción.

ing Alexander Ramirez C


Funciones
Este bloque anónimo que tiene el
mismo enfoque de la función a
continuación. Notar como el
bloque imprime en pantalla el
criterio de evaluación sin la
necesidad de usar estructuras se
control condicionales.*

ing Alexander Ramirez C


Funciones
He Aquí la Función. Para simplificar el código y
facilitar el análisis decidimos hacerla que solo acepte
3 parámetros.*/

ing Alexander Ramirez C


EJERCICIO:Funciones

ing Alexander Ramirez C


EJERCICIO: Funciones
PRUEBE LA SIGUIENTE FUNCION EN EMPLOYEES DE HR

Prueba:
SELECT low_high_salary(50, 'ST_MAN','H')
FROM dual;

Responda las siguientes preguntas:

1. ¿Qué significado tienen los parámetros que recibe la función?


2. ¿Qué validaciones realiza la función con respecto a los salarios?
3. ¿Qué válida la excepción?.
4. ¿Para qué sirve el cursor utilizado en la función?
5. ¿Evidencie con un pantallazo las validaciones posibles con la función

ing Alexander Ramirez C

También podría gustarte