INTRODUCCIÓN Los bloques de PL/SQL pueden ser bloques anónimos(scripts) y subprogramas.
Los subprogramas pueden recibir parámetros y
pueden ser: • Procedimientos almacenados • Funciones • Triggers
Lic. Cristian Mercado Quispe - UPEA
Procedimientos Almacenados Es un subprograma que ejecuta una acción específica. A diferencia de los bloques anónimos, un procedimiento almacenado puede ser compilado y almacenado en la base de datos. Un procedimiento tiene un nombre, un conjunto de parámetros y un bloque de código. No tiene que devolver ningún valor.
Lic. Cristian Mercado Quispe - UPEA
SINTAXIS CREATE [OR REPLACE ]PROCEDURE <nombre_proc> ( <param1><IN OUT> <tipo>, <param2><IN OUT> <tipo>..) IS -- declaración de variables BEGIN -- sentencias [EXCEPTION] -- control de excepción END;
Lic. Cristian Mercado Quispe - UPEA
SINTAXIS El uso de OR REPLACE permite sobre escribir un procedimiento existente. Después de PROCEDURE … IS viene la parte declarativa Al especificar el tipo de dato de los parámetros no se debe especificar la longitud del mismo.
Lic. Cristian Mercado Quispe - UPEA
El procedimiento puede tener 0 o muchos parámetros.
Los parámetros pueden ser de entrada IN o de
salida OUT o ambos IN OUT.
El valor por defecto es IN.
Lic. Cristian Mercado Quispe - UPEA
Ejemplo1 Crear un procedimiento almacenado denominado “busca_emp1”que reciba como parámetro de entrada el id del empleado y muestre los datos del empleado. Ejemplo si el id = 100, mostrar: Id: 100 nombre: Steven King Salario: 24000 Fecha contratación: 17/06/2003 Lic. Cristian Mercado Quispe - UPEA Ejemplo2 Crear un procedimiento almacenado denominado “busca_emp2”que reciba como parámetro de entrada el id del empleado y muestre los datos del empleado. Ejemplo si el id = 201, mostrar: Id: 201 nombre: MICHAEL HARTSTEIN Departamento: MARKETING Cargo: MARKETING MANAGER Lic. Cristian Mercado Quispe - UPEA Modificar el ejemplo anterior para validar el id del empleado, si el id ingresado no existe, se debe mostrar “NO EXISTE EL EMPLEADO….”
Lic. Cristian Mercado Quispe - UPEA
Ejemplo 3 Crear un procedimiento almacenado denominado “obtiene_cantidad” que reciba como parámetro de entrada el id del departamento y devuelva como parámetro de salida la cantidad de empleados que tiene.
Lic. Cristian Mercado Quispe - UPEA
FUNCIONES Una función puede tener varios parámetros de entrada pero devuelve un solo valor. Una función debe tener una cláusula de retorno en la sección ejecutable de la función. El tipo de dato devuelto debe ser declarado en el encabezado de la función.
Lic. Cristian Mercado Quispe - UPEA
SINTAXIS DE FUNCIONES CREATE OR REPLACE FUNCTION nombre_función( [param1 IN tipo1, param2 IN tipo2,….]) RETURN tipo_de_dato IS var_retornar tipo_dato; BEGIN -- ejecución y asignación RETURN var_retornar; [EXCEPCTION] -- Control de excepciones END; Lic. Cristian Mercado Quispe - UPEA FUNCIONES Ejemplo, Crear una función denominada f_devuelve_nombre, que reciba como parámetro de entrada el id del empleado y devuelva el nombre del empleado.
Lic. Cristian Mercado Quispe - UPEA
FUNCIONES Ejemplo Crear una función denominada f_devuelve_cantidad_emp que tenga como parámetro de entrada el id de un departamento y devuelva la cantidad de empleados que tiene dicho departamento.
Lic. Cristian Mercado Quispe - UPEA
CREAR LAS SIGUIENTES TABLAS P_ESTUDIANTE PK ID_ESTUDIANTE NOMBRES APELLIDOS P_CURSA FECHA_NAC UK CORREO_ELEC PK ID_CURSA FK ID_ESTUDIANTE FK ID_MATERIA NOTA GESTION AÑO P_MATERIA PK ID_MATERIA NOMBRE
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Crear un procedimiento almacenado denominado “adiciona_estudiante()”, Luego utilizar el procedimiento para registrar los siguientes estudiantes: ID_ESTUD. NOMBRE APELLIDOS FECHA_NAC CORREO_E 100 JUAN PEREZ 1/1/1995 JP@GMAIL.COM 101 MARIA GOMEZ 31/1/1990 MG@GMAIL.COM 102 LUIS CALLE 15/12/1988 LC@GMAIL.COM
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Crear un procedimiento almacenado denominado “adiciona_materia()”, Luego utilizar el procedimiento para registrar las siguientes materias: ID_MATERIA NOMBRE 10 CALCULO1 20 ALGEBRA1 30 INTRODUCCIÓN A LA PROGRAMACIÓN
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Crear un procedimiento almacenado denominado “ASIGNA_MATERIA()” que permita registrar la asignación de una materia a un estudiante, el procedimiento debe tener como parámetros de entrada el id del estudiante, el id de la materia, una vez hecha la asignación, se debe mostrar “ESTUDIANTE ASIGNADO A MATERIA”
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Utilizar el procedimiento almacenado ASIGNA MATERIA para registrar la siguiente información ID_CURSA ID_EST ID_MAT NOTA SEMESTRE GESTION 1 100 10 NULL I 2017 2 101 20 NULL I 2017 3 101 30 NULL I 2017 4 102 10 NULL I 2017 5 102 30 NULL I 2017
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Crear un procedimiento almacenado denominado “reporte_estudiante” que reciba como parámetro el id del estudiante, la gestión, el año y devuelva como parámetro de salida la cantidad de materias que esta cursando durante el periodo señalado
Lic. Cristian Mercado Quispe - UPEA
EJERCICIOS Crear un procedimiento almacenado denominado “reporte_materia” que reciba como parámetro de entrada el id de la materia, la gestión, el año y retorne como parámetro de salida la cantidad de estudiantes que tiene.