Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL-2 T4»

De wikiserver
Dreceres ràpides: navegació, cerca
(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