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 ;
/
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
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 '