Sunteți pe pagina 1din 7

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

FACULTAD DE ING. MINAS, GELOGIA Y CIVIL


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

FUNCIONES EN PL/SQL
I. OBJETIVOS

Conocer la definicin y utilizacin de funciones.


Crear e invocar funciones propias con PL/SQL.

II. MARCO TERICO

Definicin de Funcin

Una funcin es un bloque nombrado PL/SQL que devuelve un valor.

Una funcin puede estar almacenada en la B.D., como objeto de la B.D., para
repetidas ejecuciones.
Una funcin puede ser llamada como parte de una expresin.

Los procedimientos y funciones llevan a cabo tareas especficas, y su mayor


diferencia radica en que las funciones devuelven un valor.
SINTAXIS:

CREATE [OR REPLACE] FUNCTION [esquema].nombre-funcin


(nombre-parmetro {IN | OUT | IN OUT} tipo-de-dato, ...)
RETURN tipo-de-dato
{IS | AS}
Declaracin de variables;
Declaracin de constantes;
Declaracin de cursores;
BEGIN
Instrucciones SQL;
Return valor;
EXCEPTION
Bloque de excepciones PL/SQL;
END;

Descripcin de la sintaxis:
Nombre-parmetro: es el nombre que queramos dar al parmetro. Podemos
utilizar Mltiples parmetros. En caso de no necesitarlos, podemos omitir los
parntesis.
IN: especifica que el parmetro es de entrada y que por tanto dicho parmetro tiene
que tener un valor en el momento de llamar a la funcin o procedimiento. Si no se
especifica nada, los parmetros son por defecto de tipo entrada.

Lab. Administracin de Base de Datos 1 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

OUT: especifica que se trata de un parmetro de salida. Son parmetros cuyo valor
es devuelto despus de la ejecucin el procedimiento al bloque PL/SQL que lo llam.
Las funciones PLSQL no admiten parmetros de salida.
IN OUT: Son parmetros de entrada y salida a la vez.
Tipo-de-dato: Indica el tipo de dato PLSQL que corresponde al parmetro
(NUMBER, VARCHAR2, etc).
Valor: es el valor que la funcin debe devolver y normalmente est almacenado en
una variable.

Desde dnde llamarlas

Como columna de un SELECT.

Condiciones en clusulas WHERE y HAVING.

Clusulas ORDER BY y GROUP BY.

Clusula VALUES de un comando INSERT.

Clusula SET de un comando UPDATE.

Borrado de Funciones

Para quitar una funcin de la parte del servidor, utilizando SQL*Plus, ejecutar el
comando DROP FUNCTION.
Sintaxis:

III. DESARROLLO

CREANDO UN FUNCION
EJEMPLO 01.
Por medio de una funcin, se desea obtener la suma de 2 nmeros.

Nota: Cada funcin debe devolver un valor del tipo especificado utilizando la sentencia
RETURN.

Lab. Administracin de Base de Datos 2 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

LLAMADAS A FUNCIONES
Desde un bloque annimo
BEGIN
DBMS_OUTPUT.PUT_LINE(' sUMA DE DOS VARIABLES: '||F_SUMA(15,1000));
END;

Desde una instruccin SQL


SELECT FIRST_NAME,SALARY,F_SUMA(SALARY,COMMISSION_PCT )AS "SALARIO TOTAL"
FROM EMPLOYEES;

Desde otro procedimiento, funcin y triggers


CREATE PROCEDURE proceso ... IS ...
BEGIN ...
/* llamada a la funcin obtener_salario */
w_sal :=F_SUMA (10,2000);
END;

Ojo: Es necesario activar SERVEROUTPUT (SET SERVEROUTPUT ON) para ver


las salidas desde procedimientos o funciones almacenados
Ejemplo2:
Crear un procedimiento almacenado para calcular el salario total de un empleado,
ingresando el codigo del empleado. Llamar o utilizar la funcin f_suma en el
procedimiento.

CREATE OR REPLACE PROCEDURE P_Salario_Total(codigo in


EMPLOYEES.EMPLOYEE_ID%TYPE)
IS
calcular_sal number(4,2);
nombre employees.FIRST_NAME%type;
BEGIN

select FIRST_NAME, F_SUMA(SALARY,COMMISSION_PCT) into nombre, calcular_sal


from employees
where EMPLOYEE_ID=codigo;
/* llamada a la funcin F_suma */
dbms_Output.put_line('el salario total del empleado '||nombre||' incluyendo la
comisin ES :'|| calcular_sal);
EXCEPTION
WHEN OTHERS THEN
SYS.DBMS_OUTPUT.PUT_LINE('ERROR, : '||SQLERRM);
END;

Ejemplo3: Crear una funcin que retorne el nombre y apellido de un empleado segn
su cdigo

Lab. Administracin de Base de Datos 3 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejemplo3: Crear una funcin que retorne el nombre del departamento segn su cdigo
indicado

CONSULTA DE LA TABLA JOB_HISTORY


select EMPLOYEE_ID,START_DATE,END_DATE,JOB_ID,DEPARTMENT_ID from
HR.JOB_HISTORY;

Llamando a las funciones mediante una consulta select

select EMPLOYEE_ID as cod_empleado,F_NOMBRE_EMPLEADO(EMPLOYEE_ID) as


Empleado ,DEPARTMENT_ID,F_NOMBRE_DEPARTAMENTO(DEPARTMENT_id ) as
Departamento
from HR.JOB_HISTORY;

Lab. Administracin de Base de Datos 4 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejercicio01
Desarrolle una funcin que permita calcular la edad de un cliente, del esquema OE.
Utilizar la funcin para calcular tu edad

Salida1

Salida2

Ejercicio02
Crear una funcin que permita obtener el precio de un producto segn ingresemos el
nombre del producto.

Ejercicio03
Crear una funcin que calcule la cantidad total de pedidos que realiz un cliente.
Invocar con una consulta sql

Lab. Administracin de Base de Datos 5 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejercicio04
Crear una funcin para mostrar la cantidad de pedidos de un producto x

IV. TAREA PARA CASA

1-Mostrar a los empleados con su respectivo pas Ingresando el Cdigo de Empleado(HR).

2- Crear una funcin que al ingresar el nombre del departamento nos retorne la cantidad
de empleados.

3.- Crear una funcin que regrese como valor el id_del empleado que tenga el salario ms
grande de un departamento dado.

4. Crear una funcin que regrese los das que han transcurrido desde una fecha dada hasta
la fecha de hoy.

5-crear un procedimiento almacenado cualquiera y desde ste invocar una funcin

Lab. Administracin de Base de Datos 6 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Nota: capturar resultados y maneje excepciones.

Lab. Administracin de Base de Datos 7 Prof. Elvira Fernndez


(IS-443)

S-ar putea să vă placă și