Creación y Gestión de Paquetes

Puede crear y gestionar paquetes PL/SQL.

Consulte también: "Tutorial: Declaración de Variables y Constantes en un Subprograma", que muestra cómo cambiar el cuerpo de un paquete

Acerca de la Estructura del Paquete

Un paquete siempre tiene una especificación y normalmente tiene un cuerpo. La especificación define el paquete en sí y es una interfaz de programa de aplicación (API). El cuerpo define las consultas de los cursores declarados y el código de los subprogramas que se declaran en la especificación del paquete.

La especificación de paquete define el paquete, y las variables, las variables, las constantes, las excepciones, los cursores explícitas y las subprogramas a las que se puede hacerse referencia desde fuera del paquete. Una especificación de paquete es una interfaz de programa de aplicaciones (API) : Tiene toda la información que el programa de cliente necesita para llamar a sus subprogramas, pero ninguna información sobre su implantación.

El cuerpo del conjunto define las consultas para los cursores declarados y el código para los subprogramas, que se declaran en la especificación del conjunto (por lo tanto, un paquete sin cursores declarados ni subprogramas no necesita un cuerpo). El cuerpo del paquete también puede definir subprogramas locales , que no Se declaran en la especificación y que solamente pueden llamarlos otros subprogramas del paquete. El contenido del cuerpo del paquete se oculta a los programas de cliente. Puede cambiar el cuerpo del paquete sin invalidar las aplicaciones que llaman al paquete.

Consulte además:

Tutorial: Creación de una Especificación del Paquete

Este tutorial muestra cómo utilizar la herramienta Crear Paquete para crear una especificación para un paquete denominado EMP_EVAL, que aparece en muchos tutoriales y ejemplos de este documento.

Para crear una especificación de paquete, utilice la herramienta Crear Paquete de SQL Developer o la sentencia DDL CREATE PACKAGE.

Pasos para crear una especificación de paquete mediante la herramienta Crear paquete:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, haga clic con el botón derecho en Paquetes.

  3. En la lista de opciones, haga clic en Nuevo paquete.

    Se abre la ventana Crear paquete. El campo Esquema tiene el valor HR, el campo Nombre tiene el valor por defecto PACKAGE1 y la casilla de verificación Agregar Nuevo Origen En Minúsculas estará desactivada.

  4. En Esquema, acepte el valor por defecto, HR.

  5. En Name, cambie el valor PACKAGE1 a EMP_EVAL.

  6. Haga clic en Aceptar.

    Se abrirá la sentencia CREATE PACKAGE que ha creado el paquete:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    El título del panel aparece en cursiva, lo que indica que el paquete no se ha guardado para la base de datos.

  7. (Opcional) En la sentencia CREATE PACKAGE, sustituya el comentario con declaraciones.

    Si no se realiza este paso ahora, podrá hacerlo más tarde, como se indica en Tutorial: Cambio de una Especificación de Paquete.

  8. En el menú Archivo, seleccione Guardar.

    Oracle Database compila el paquete y lo guarda. El título del panel EMP_EVAL dejará de estar en cursiva.

Consulte también: Referencia de lenguaje PL/SQL de Oracle Database para obtener información sobre la sentencia CREATE PACKAGE (para la especificación del paquete)

Tutorial: Cambio de una Especificación de Paquete

En este tutorial se muestra cómo utilizar la herramienta Editar para cambiar la especificación del paquete EMP_EVAL, que aparece en muchos tutoriales y ejemplos de este documento. Específicamente, el tutorial muestra cómo agregar declaraciones para un procedimiento, EVAL_DEPARTMENT y una función, CALCULATE_SCORE.

Para cambiar una especificación de paquete, utilice la herramienta Editar de SQL Developer o la sentencia DDL CREATE PACKAGE con la cláusula OR REPLACE.

Pasos para cambiar una especificación de paquete EMP_EVAL con la herramienta Editar:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Paquetes.

  3. En la lista de paquetes, haga clic con el botón derecho en EMP_EVAL.

  4. En la lista de opciones, haga clic en Editar.

    Se abrirá la sentencia CREATE PACKAGE que ha creado el paquete:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    El título del panel no aparece en cursiva, lo que indica que el paquete se ha guardado.

  5. En el panel EMP_EVAL, sustituya el comentario por este código:

     PROCEDURE eval_department ( dept_id IN NUMBER );
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER;
    

    El título del panel EMP_EVAL cambia a fuente cursiva, lo que indica que los cambios no se han guardado en la base de datos.

  6. Haga clic en el icono Compilar.

    La especificación del paquete cambiada se compila y guarda en la base de datos. El título del panel EMP_EVAL dejará de estar en cursiva.

Consulte también: Referencia de lenguaje PL/SQL de Oracle Database para obtener información sobre la sentencia CREATE PACKAGE con la cláusula OR REPLACE

Tutorial: Creación de un Cuerpo del Paquete

En este tutorial se muestra cómo utilizar la herramienta Crear Cuerpo para crear un cuerpo para el paquete EMP_EVAL, que aparece en muchos ejemplos y tutoriales de este documento.

Para crear un cuerpo de paquete, utilice la herramienta Crear Cuerpo de SQL Developer o bien la sentencia DDL CREATE PACKAGE BODY.

Pasos para crear un cuerpo para el paquete EMP_EVAL con la herramienta Crear Cuerpo:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Paquetes.

  3. En la lista de paquetes, haga clic con el botón derecho en EMP_EVAL.

  4. En la lista de opciones, haga clic en Crear cuerpo.

    Aparece el panel del cuerpo de EMP_EVAL, en el que se muestra el código generado automáticamente para el cuerpo del paquete:

     CREATE OR REPLACE
     PACKAGE BODY EMP_EVAL AS
    
     PROCEDURE eval_department(dept_id IN NUMBER) AS
     BEGIN
    
         -- TODO implementation required for PROCEDURE EMP_EVAL.eval_department
         NULL;
     END eval_department;
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER AS
     BEGIN
    
         -- TODO implementation required for FUNCTION EMP_EVAL.calculate_score
         RETURN NULL;
     END calculate_score;
    
     END EMP_EVAL;
    

    El título del panel está en cursiva, lo cual señala que el código no se guarda en la base de datos.

  5. (Opcional) En la sentencia CREATE PACKAGE BODY:

    • Reemplace los comentarios por sentencias ejecutables.

    • (Opcional) En la parte ejecutable del procedimiento, suprima NULL o reemplácelo por una sentencia ejecutable.

    • (Opcional) En la parte ejecutable de la función, reemplace NULL por otra expresión.

    Si no se realiza este paso ahora, podrá hacerlo más adelante, como se muestra en "Tutorial: Declaración de Variables y Constantes en un Subprograma".

  6. Haga clic en el icono Compilar.

    El cuerpo cambiado del paquete se compila y se guarda en la base de datos. El título del panel del cuerpo EMP_EVAL deja de aparecer en cursiva.

Consulte también: Referencia de lenguaje PL/SQL de Oracle Database para obtener información sobre la sentencia CREATE PACKAGE BODY (para el cuerpo del paquete)

Borrado de un Paquete

Para borrar un paquete (especificación y cuerpo), utilice el marco de conexión y la herramienta Borrar de SQL Developer, o bien la sentencia DDL DROP PACKAGE.

Precaución: No borre el paquete EMP_EVAL; lo necesita para tutoriales posteriores. Si desea practicar el borrado de paquetes, cree paquetes simples y, a continuación, bórrelos.

Pasos para borrar un paquete con la herramienta Borrar:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Paquetes.

    Aparecerá una lista de paquetes.

  3. En la lista de paquetes, haga clic con el botón secundario en el nombre del paquete que desea borrar.

  4. En la lista de opciones, haga clic en Borrar paquete.

  5. En la ventana Drop, haga clic en Apply (Aplicar).

  6. En la ventana Confirmation, haga clic en OK (Aceptar).

Consulte también: Referencia de lenguaje PL/SQL de Oracle Database para obtener información sobre la sentencia DROP PACKAGE