Crear paquetes PL/SQL

Puede crear un paquete PL/SQL en un proyecto de desarrollo de datos desde el Explorador de proyectos de datos.

Antes de empezar

Asegúrese de que se crea lo siguiente:
  1. Una conexión con una base de datos que sea compatible con PL/SQL.
  2. Un proyecto.

Procedimiento

Para crear un paquete PL/SQL:

  1. Desde el Explorador de proyectos de datos, expanda un objeto de esquema.
  2. Seleccione la carpeta Paquetes PL/SQL y pulse Nuevo > Paquete PL/SQL. Se abrirá el asistente Paquete PL/SQL nuevo.
  3. En la página Nombre, especifique el proyecto donde reside el paquete PL/SQL, o pulse Nuevo para crear un proyecto nuevo.
  4. Escriba el nombre del paquete nuevo o utilice el nombre predeterminado.
  5. Pulse Siguiente para ver la página Resumen.
  6. Pulse Finalizar. El nuevo paquete PL/SQL aparecerá en el proyecto, y el editor de paquetes PL/SQL se abrirá y mostrará las páginas Especificación y Cuerpo.

    Una especificación de paquete establece qué objetos de paquete se pueden referenciar desde fuera del paquete; la especificación especifica rutinas y declara excepciones.

    Un cuerpo de paquete contiene la implementación de todos los procedimientos y funciones que están declarados dentro de la especificación de paquete.

  7. Cree la especificación y cuerpo del paquete PL/SQL.
    1. En la página Especificación, escriba las rutinas y excepciones que se deben implementar en el cuerpo. Por ejemplo:
      CREATE OR REPLACE PACKAGE emp_admin
      IS
      
         FUNCTION get_dept_name (
            p_deptno        NUMBER DEFAULT 10
         )
         RETURN VARCHAR2;
         FUNCTION update_emp_sal (
            p_empno         NUMBER,
            p_raise         NUMBER
         )
         RETURN NUMBER;
         PROCEDURE hire_emp (
            p_empno         NUMBER,
            p_ename         VARCHAR2,
            p_job           VARCHAR2,
            p_sal           NUMBER,
            p_hiredate      DATE DEFAULT sysdate,
            p_comm          NUMBER DEFAULT 0,
            p_mgr           NUMBER,
            p_deptno        NUMBER DEFAULT 10
         );
         PROCEDURE fire_emp (
            p_empno         NUMBER
    2. En la página Cuerpo, escriba la implementación de las rutinas. Por ejemplo:
      --
      --  Cuerpo del paquete 'emp_admin'.
      --
      CREATE OR REPLACE PACKAGE BODY emp_admin
      IS
         --
         --  Función que consulta la tabla 'dept' de acuerdo con el número
         --  de departamento y devuelve el nombre del departamento
         --  correspondiente.
         --
         FUNCTION get_dept_name (
            p_deptno        IN NUMBER DEFAULT 10
         )
         RETURN VARCHAR2
         IS
            v_dname         VARCHAR2(14);
         BEGIN
            SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
            RETURN v_dname;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               DBMS_OUTPUT.PUT_LINE('Número de departamento no válido ' || p_deptno);
               RETURN '';
         END;
         --
         --  Función que actualiza el salario de un empleado según el
         --  número de empleado y el incremento/reducción salarial
         --  como parámetros IN. Tras la finalización correcta, la
         --  función devuelve el nuevo salario actualizado.
         --
         FUNCTION update_emp_sal (
            p_empno         IN NUMBER,
            p_raise         IN NUMBER
         )
         RETURN NUMBER
         IS
            v_sal           NUMBER := 0;
         BEGIN
            SELECT sal INTO v_sal FROM emp WHERE empno = p_empno;
            v_sal := v_sal + p_raise;
            UPDATE emp SET sal = v_sal WHERE empno = p_empno;
            RETURN v_sal;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               DBMS_OUTPUT.PUT_LINE('Empleado ' || p_empno || ' no encontrado');
               RETURN -1;
            WHEN OTHERS THEN
               DBMS_OUTPUT.PUT_LINE('Lo siguiente es SQLERRM:');
               DBMS_OUTPUT.PUT_LINE(SQLERRM);
               DBMS_OUTPUT.PUT_LINE('Lo siguiente es SQLCODE:');
               DBMS_OUTPUT.PUT_LINE(SQLCODE);
               RETURN -1;
         END;
         --
         --  Procedimiento que inserta un nuevo registro de empleado en la tabla 'emp'.
         --
         PROCEDURE hire_emp (
            p_empno         NUMBER,
            p_ename         VARCHAR2,
            p_job           VARCHAR2,
            p_sal           NUMBER,
            p_hiredate      DATE    DEFAULT sysdate,
            p_comm          NUMBER  DEFAULT 0,
            p_mgr           NUMBER,
            p_deptno        NUMBER  DEFAULT 10
         )
         AS
         BEGIN
            INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
               VALUES(p_empno, p_ename, p_job, p_sal,
                      p_hiredate, p_comm, p_mgr, p_deptno);
         END;
         --
         --  Procedimiento que suprime un registro de empleado en la tabla
         --  'emp' de acuerdo con el número de empleado.
         --
         PROCEDURE fire_emp (
            p_empno         NUMBER
         )
         AS
         BEGIN
            DELETE FROM emp WHERE empno = p_empno;
         END;
      END;
  8. Guarde el paquete.

Resultados

El nuevo paquete PL/SQL contendrá una especificación y un cuerpo.


Comentarios