Oracle procedimientos almacenados se describen con exactitud la forma en que interactúan. Son procedimientos que utilizan Oracle PL /SQL que residen de forma permanente en la base de datos codificados . De esta manera, los paquetes de Oracle pueden ser reutilizados y , ya que su información está en la base de datos y no se llevó a cabo en los archivos de origen independientes , la información está segura. La creación de paquetes de Oracle implica la creación de una cabecera, especificando los prototipos de las funciones y parámetros , y el cuerpo del paquete que contiene el código real . Tanto la cabecera y el cuerpo pueden ser colocados en un único archivo de texto , pero la buena práctica dicta que deben ser almacenados individualmente . Instrucciones
1
Cree dos archivos de texto con un sufijo de archivo SQL . Estos archivos de texto que contienen el código fuente para el encabezado de paquete de Oracle y el cuerpo del paquete de Oracle respectivamente. Ellos actuarán como los comandos de código para crear el paquete en la base de datos como un procedimiento almacenado .
2
Introduzca los comandos de encabezado del paquete para crear el paquete. Edite el archivo de cabecera y colocar los comandos en que para crear los prototipos de funciones . El archivo de cabecera indica al intérprete de Oracle que esperar al compilar el cuerpo del paquete en términos de parámetros y valores de retorno . Un ejemplo de la cabecera del paquete se muestra a continuación :
crear o sustituir update_planned_hrs PAQUETE
Planned_hours NUMBER ( 4 ) ;
PROCEDIMIENTO set_new_planned ( p_emp_id en número, p_project_id en número, p_hours en número) ;
FUNCIÓN existing_planned ( p_emp_id en número, p_project_id en número) Devuelve el número ;
update_planned_hrs END ;
/< br >
Este es un típico encabezado del paquete. Se puede colocar en su propio archivo de origen o en el mismo archivo fuente como el cuerpo del paquete . Es una buena práctica para mantener a los dos en sus propios archivos de origen , sin embargo. Siempre ejecutar los comandos de creación de paquetes ( la cabecera) primero
3
completar el paquete mediante la introducción de los datos del cuerpo del paquete , correspondiente a las funciones de cabecera y los parámetros introducidos de este modo: .
< p> CREATE OR REPLACE PAQUETE update_planned_hrs CUERPO
PROCEDIMIENTO set_new_planned ( p_emp_id en número, p_project_id en número, p_hours en número)
COMENZAR
ACTUALIZACIÓN employee_on_activity ea
SET ea.ea_planned_hours = p_hours
DONDE
ea.ea_emp_id = p_emp_id
Y ea.ea_proj_id = p_project_id ;
EXCEPCIÓN
CUANDO ENTONCES NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , ' No existe el empleado o proyecto ) ;
FIN set_new_planned ;
FUNCIÓN existing_planned ( p_emp_id en número, p_project_id en número) Devuelve el número
existing_hours NUMBER ( 4 ) ;
COMENZAR
SELECT ea . ea_planned_hours EN existing_hours
DE employee_on_activity ea
DONDE
ea.ea_emp_id = p_emp_id
Y ea.ea_proj_id = p_project_id ;
RETURN ( existing_hours ) ;
EXCEPCIÓN
CUANDO ENTONCES NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , ' No existe el empleado o proyecto ) ;
FIN existing_planned ;
update_planned_hrs END ;
/
4
Prueba el paquete funciona mediante el uso de datos de prueba adecuados . Esto implicará una llamada al paquete desde la línea de comandos de Oracle SQLPlus como sigue:
DECLARE
NÚMERO l_emp_id ;
NÚMERO l_project_id ;
COMENZAR < br >
l_emp_id : = 1 ;
l_project_id : . = 12 ;
- obtener las horas programadas existentes para este empleado utilizando la variable de paquete persistente
update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id ) ;
- Actualiza ahora los empleados horas planificadas
update_planned.planned_hours : update_planned.planned_hours + = 10 ;
update_planned . set_new_planned ( l_emp_id , l_project_id , update_planned.planned_hours ) ;
- salida de los resultados
dbms_output.put_line ( ' Empleado '