¿Cómo Estructurar y Usar las Function en Oracle?

Si aprendes como se debe estructurar de forma eficiente una Function en Oracle podrás desarrollar funciones que te permitan obtener resultados rápidamente en tus procesos. Las Function en Oracle las puedes utilizar en una cláusula SELECT como una columna o como parte de las condiciones del WHERE, y también en la cláusula IF y/o CASE.

La estructura de las Function en Oracle varía entre una function independiente y una function dentro de un package, revisemos cada caso a continuación:

Function Independiente.

CREATE O REPLACE FUNCTION Fnc_Edad_Empleado( p_Rut In Number) Return Number Is

Cursor c_Emp Is

Select emp.edad From T_Empleado Emp Where Emp.Rut = p_Rut;

lin_Edad Number;

Begin

Open c_Emp;

Fetch c_Emp Into lin_Edad;

if c_Emp%Found Then

Return lin_Edad;

Else

Return 0;

End if;

Exception

When Others Then Return -1;

End Fnc_Edad_Empleado;

En este ejemplo se crea una Function con la cláusula CREATE O REPLACE FUNCTION que permite crear la function si no existe o la reemplaza si ya existe. Nótese que una function siempre debe contener un bloque BEGIN END, antes del Begin se declara un cursor y una variable, luego del begin se abre el cursor y se obtiene la edad del empleado en una variable y se retorna el valor, si no la encuentra retorna 0, si ocurre algún error la function retorna -1.

Function dentro de los Packages en Oracle.

La estructura de una Function dentro de un Package es muy similar a la de una function independiente, solo se debe eliminar la cláusula CREATE O REPLACE, como ejemplo construyamos la misma function anterior pero dentro de un package:

CREATE OR REPLACE PACKEGE BODY PKG_DEPARTAMENTO AS

/* Function en Oracle */

FUNCTION Fnc_Edad_Empleado( p_Rut In Number) Return Number Is

Begin

<< Desarrollo de la function >>

End Fnc_Edad_Empleado;

END PKG_DEPARTAMENTO;

/

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”  ¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Revisemos ahora como se utiliza una Function en Oracle  en un SELECT, IF y CASE:

Select dtra.id_departamento, dtra.rut, dtra.dias

From T_Dias_Trabajados Dtra

Where dtra.id_departamento = pin_id_departamento

And Fnc_Edad_Empleado(dtra.rut) > 30

En este ejemplo se usa la function Fnc_Edad_Empleado para buscar los dias trabajados de los empleados mayores de 30 años de un solo departamento.

If PKG_DEPARTAMENTO.Fnc_Edad_Empleado(pin_rut) > 30 Then

< Acciones dentro del if >

End if;

Case PKG_DEPARTAMENTO.Fnc_Edad_Empleado(pin_rut)

When 30 Then <Accion a tomar>

When 35 Then <Accion a tomar>

Else <Otras acciones>

End Case;

En estos dos ejemplos la function Fnc_Edad_Empleado que esta en el Package PKG_DEPARTAMENTO se usa en las cláusulas IF y CASE para tomar distintas acciones.

Disculpa la indentación pero es complicado escribir código en este formato, pueden copiar los ejemplos en su propio editor y los indentan para verlos mas claramente.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de Packages en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con Packages en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en 7 Pasos

Esta entrada fue publicada en Function en Oracle, Packages en Oracle y etiquetada , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s