Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL-2 T4»
(Es crea la pàgina amb «==Soluciones a la Práctica 4-1: Trabajar con Paquetes==».) |
(→Soluciones a la Práctica 4-1: Trabajar con Paquetes) |
||
Línia 1: | Línia 1: | ||
==Soluciones a la Práctica 4-1: Trabajar con Paquetes== | ==Soluciones a la Práctica 4-1: Trabajar con Paquetes== | ||
+ | |||
+ | En esta práctica, modificará el código del paquete EMP_PKG que ha creado anteriormente y, a continuación, sobrecargará el procedimiento ADD_EMPLOYEE. A continuación, creará dos funciones sobrecargadas denominadas GET_EMPLOYEE en el paquete EMP_PKG. También agregará un procedimiento público a EMP_PKG para rellenar una tabla PL/SQL privada de identificadores de departamento válidos, además de modificar la función VALID_DEPTID para utilizar el contenido de la tabla PL/SQL privada con el fin de validar los valores de identificador válidos. También cambiará la función de procesamiento de validación VALID_DEPTID para utilizar la tabla PL/SQL privada de identificadores de departamento. Por último, reorganizará los subprogramas en el cuerpo y la especificación del paquete para que estén en secuencia alfabética. | ||
+ | |||
+ | 1) Modifique el código del paquete EMP_PKG que ha creado en la Práctica 4, paso 2 y sobrecargue el procedimiento ADD_EMPLOYEE. | ||
+ | |||
+ | :a) En la especificación del paquete, agregue un nuevo procedimiento denominado ADD_EMPLOYEE, que acepte los tres parámetros siguientes: | ||
+ | |||
+ | ::i) First name | ||
+ | ::ii) Last name | ||
+ | ::iii) Department ID | ||
+ | |||
+ | :'''Abra el archivo /home/oracle/labs/plpu/solns/sol_04_01_a.sql.''' | ||
+ | :'''El código se muestra de la siguiente forma:''' | ||
+ | <pre> | ||
+ | CREATE OR REPLACE PACKAGE emp_pkg IS | ||
+ | |||
+ | PROCEDURE add_employee( | ||
+ | p_first_name employees.first_name%TYPE, | ||
+ | p_last_name employees.last_name%TYPE, | ||
+ | p_email employees.email%TYPE, | ||
+ | p_job employees.job_id%TYPE DEFAULT 'SA_REP', | ||
+ | p_mgr employees.manager_id%TYPE DEFAULT 145, | ||
+ | p_sal employees.salary%TYPE DEFAULT 1000, | ||
+ | p_comm employees.commission_pct%TYPE DEFAULT 0, | ||
+ | p_deptid employees.department_id%TYPE DEFAULT 30); | ||
+ | |||
+ | /* New overloaded add_employee */ | ||
+ | |||
+ | PROCEDURE add_employee( | ||
+ | p_first_name employees.first_name%TYPE, | ||
+ | p_last_name employees.last_name%TYPE, | ||
+ | p_deptid employees.department_id%TYPE); | ||
+ | |||
+ | PROCEDURE get_employee( | ||
+ | p_empid IN employees.employee_id%TYPE, | ||
+ | p_sal OUT employees.salary%TYPE, | ||
+ | p_job OUT employees.job_id%TYPE); | ||
+ | END emp_pkg; | ||
+ | / | ||
+ | SHOW ERRORS | ||
+ | </pre> |
Revisió del 12:29, 24 abr 2016
Soluciones a la Práctica 4-1: Trabajar con Paquetes
En esta práctica, modificará el código del paquete EMP_PKG que ha creado anteriormente y, a continuación, sobrecargará el procedimiento ADD_EMPLOYEE. A continuación, creará dos funciones sobrecargadas denominadas GET_EMPLOYEE en el paquete EMP_PKG. También agregará un procedimiento público a EMP_PKG para rellenar una tabla PL/SQL privada de identificadores de departamento válidos, además de modificar la función VALID_DEPTID para utilizar el contenido de la tabla PL/SQL privada con el fin de validar los valores de identificador válidos. También cambiará la función de procesamiento de validación VALID_DEPTID para utilizar la tabla PL/SQL privada de identificadores de departamento. Por último, reorganizará los subprogramas en el cuerpo y la especificación del paquete para que estén en secuencia alfabética.
1) Modifique el código del paquete EMP_PKG que ha creado en la Práctica 4, paso 2 y sobrecargue el procedimiento ADD_EMPLOYEE.
- a) En la especificación del paquete, agregue un nuevo procedimiento denominado ADD_EMPLOYEE, que acepte los tres parámetros siguientes:
- i) First name
- ii) Last name
- iii) Department ID
- Abra el archivo /home/oracle/labs/plpu/solns/sol_04_01_a.sql.
- El código se muestra de la siguiente forma:
CREATE OR REPLACE PACKAGE emp_pkg IS PROCEDURE add_employee( p_first_name employees.first_name%TYPE, p_last_name employees.last_name%TYPE, p_email employees.email%TYPE, p_job employees.job_id%TYPE DEFAULT 'SA_REP', p_mgr employees.manager_id%TYPE DEFAULT 145, p_sal employees.salary%TYPE DEFAULT 1000, p_comm employees.commission_pct%TYPE DEFAULT 0, p_deptid employees.department_id%TYPE DEFAULT 30); /* New overloaded add_employee */ PROCEDURE add_employee( p_first_name employees.first_name%TYPE, p_last_name employees.last_name%TYPE, p_deptid employees.department_id%TYPE); PROCEDURE get_employee( p_empid IN employees.employee_id%TYPE, p_sal OUT employees.salary%TYPE, p_job OUT employees.job_id%TYPE); END emp_pkg; / SHOW ERRORS