Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica Leccion 12

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 3

Oracle Database 10g: Program with PL/SQL

2008
Prá ctica 12.
1. Copia y modifica el código del paquete EMP_PKG que se creó en la Práctica 11, Ejercicio 2, y
sobrecargue el procedimiento ADD_EMPLOYEE.

a. En la especificación del paquete, agregue un procedimiento denominado ADD_EMPLOYEE que


reciba tres parámetros: el nombre, apellido y ID del departamento. Guarde y compile el código.
b. Implemente el nuevo procedimiento ADD_EMPLOYEE en el cuerpo del paquete, de tal modo
que el propio procedimiento forme la dirección de correo en mayúsculas tomando la primera
letra del nombre y concatenándole las 7 primeras letras del apellido. El procedimiento debe
llamar al procedimiento existente ADD_EMPLOYEE para realizar la actual operación INSERT
usando los parámetros y formando el correo electrónico con los valores proporcionados.
Guarde y compile el código.
c. Invoque el Nuevo procedimiento ADD_EMPLOYEE pasando como parámetros el nombre
Samuel Joplin para que sea agregado al departamento 30.

2. En el paquete EMP_PKG, cree dos funciones sobrecargadas llamadas GET_EMPLOYEE.

a. Agregue en la especificación una función GET_EMPLOYEE que reciba el parámetro emp_id


que sea del mismo tipo de dato que employees.employee_id, y una segunda función
GET_EMPLOYEE que reciba el parámetro family_name del mismo tipo que
employees.last_name. Ambas funciones deben devolver un EMPLOYEES%ROWTYPE.
Guarde y compile.
b. En el cuerpo del paquete implemente la primera función GET_EMPLOYEE que consulte un
empleado a partir de un ID dado, y la segunda función que haga uso del operador igualdad
junto con el valor proporcionado por el parámetro family_name. Guarde y compile.
c. Agregue el procedimiento PRINT_EMPLOYEE al paquete, que reciba un EMPLOYEES
%ROWTYPE como parámetro y despliegue el ID del departamento, ID del empleado,
nombre, apellido, job_id, y salario del empleado que se haya pasado en el parámetro.
Utilice DBMS_OUTPUT. Salve y compile.
d. Utilice un bloque anónimo para invocar la función EMP_PKG.GET_EMPLOYEE con un ID de
empleado de 100 y otro llamado con apellido 'Joplin'. Haga uso del procedimiento
PRINT_EMPLOYEE para desplegar el resultado de cada registro devuelto.

3. Debido a que la compañía no actualiza con frecuencia los datos departamentales, debe mejorar el
desempeño del paquete EMP_PKG agregando un procedimiento público INIT_DEPARTMENTS para
poblar un tabla PL/SQL privada que valide los ID de departamentos. Modifique la función VALID_DEPTID
para que use el contenido de la tabla privada PL/SQL para validar los valores de los departamentos.

a. En la especificación del paquete, cree un procedimiento INIT_DEPARTMENTS que no tenga


parámetros.
b. En el cuerpo del paquete, implemente el procedimiento INIT_DEPARTMENTS que
almacene todos los ID de los departamentos en una tabla index-by privada denominada

Práctica 12
1
Oracle Database 10g: Program with PL/SQL

2008
valid_departments que contenga valores de tipo BOOLEAN. El valor del ID del
departamento se usará como valor del índice del registro que se creará en la tabla index-by
y asigne el valor TRUE que indicará la presencia del departamento. Declare la variable
valid_departments y la definición de su tipo de dato boolean_tabtype al inicio del paquete.
c. En el cuerpo del paquete, cree un bloque de inicialización que llame al procedimiento
INIT_DEPARTMENTS que inicialice la tabla. Salve y compile.

4. Cambie el proceso de validación VALID_DEPTID para use la tabla privada PL/SQL con los IDs de los
departamentos.

a. Modifique VALID_DEPTID para realizar la validación usando la tabla PL/SQL que contiene
los IDs de los departamentos. Guarde y compile.
b. Pruebe el código invocando el procedimiento ADD_EMPLOYEE con los valores ‘James
Bond’ y 15. ¿Qué sucede?
c. Agregue un nuevo departamento con ID igual a 15 y nombre ‘Security’. Haga permanentes
los cambios.
d. Pruebe el código, invocando de nuevo ADD_EMPLOYEE usando como nombre ‘James
Bond’ y el departamento 15. ¿Qué sucede?
e. Ejecute el procedimiento EMP_PKG.INIT_DEPARTMENTS para que se actualice la tabla
PL/SQL interna con el último valor de departamento.
f. Invoque el procedimiento ADD_EMPLOYEE con los valores ‘James Bond’ para el nombre y
15 para el departamento. ¿Qué sucede?
g. Elimine el empleado ‘James Bond’ y el departamento 15 de sus respectivas tablas, haga
permanentes los cambios, y refresque los datos de los departamentos invocando el
procedimiento EMP_PKG.INIT_DEPARTMENTS.

5. Reorganice los subprogramas en la especificación y cuerpo del paquete de tal modo que estén
ordenados alfabéticamente.

a. Modifique la especificación del paquete y reorganice alfabéticamente. Cargue y compile la


especificación. ¿Qué sucede?
b. Edite el cuerpo del paquete y reorganice todos los programas alfabéticamente. Cargue y
compile la especificación del paquete. ¿Qué sucede?
c. Corrija los errores de compilación por medio de una declaración adelantada en el cuerpo
del paquete para los subprogramas que habían causado controversia. Cargue y recree el
cuerpo del paquete. ¿Qué sucede? Salve el código del paquete en un archivo.

Si tiene tiempo, realice el siguiente ejercicio:

6. Encapsule el cuerpo del paquete EMP_PKG y recréelo.

Práctica 12
1
Oracle Database 10g: Program with PL/SQL

2008
a. Consulte el diccionario de datos para ver el código fuente del cuerpo del paquete
EMP_PKG.

b. Inicie una ventana de comando y ejecute el comando WRAP en la línea de comando para
encapsular el cuerpo del paquete EMP_PKG. Al nombre del archivo de salida agréguele la
extensión *.plb.
Tip: Copie el archivo (generado en el ejercicio 5c) que contiene el cuerpo del paquete a un
archivo llamado emp_pkb_b.sql.

c. En iSQL*Plus, cargue y ejecute el archivo *.plb que contiene el código fuente encapsulado.

d. Consulte el diccionario de datos para ver de nuevo el código fuente del cuerpo del
paquete. ¿Es legible el código?

Práctica 12
1

También podría gustarte