Criando e Gerenciando Pacotes

Você pode criar e gerenciar pacotes PL/SQL.

Consulte Também: "Tutorial: Declarando Variáveis e Constantes em um Subprograma", que mostra como alterar o corpo de um pacote

Sobre a Estrutura do Pacote

Um pacote sempre tem uma especificação e, geralmente, tem um corpo. A especificação define o pacote em si e é uma API (Application Program Interface). O corpo define as consultas para os cursores declarados, e o código para os subprogramas, que são declarados na especificação do pacote.

A especificação de pacote define o pacote, declarando os tipos, variáveis, constantes, exceções, cursores e subprogramas declarados que podem ser referenciados de fora do pacote. Uma especificação de pacote é uma API (interface de programa de aplicativo): Ela tem todas as informações que programas clientes precisam para chamar seus subprogramas, mas nenhuma informação sobre sua implementação.

O corpo de pacote define as consultas para os cursores declarados e o código para os subprogramas, que são declarados na especificação do pacote (portanto, um pacote sem cursores nem subprogramas declarados não precisa ter um corpo). O corpo do package também pode definir subprogramas Locais , que não são declarados na especificação e podem ser chamados somente por outros subprogramas no pacote. O conteúdo do corpo do pacote está oculto dos programas do cliente. Você pode alterar o corpo do pacote, sem invalidar os aplicativos que chamam o pacote.

Consulte também:

Tutorial: Criando uma Especificação de Pacote

Este tutorial mostra como usar a ferramenta Criar Pacote para criar uma especificação para um pacote chamado EMP_EVAL, que aparece em muitos tutoriais e exemplos neste documento.

Para criar uma especificação de pacote, use a ferramenta SQL Developer CREATE PACKAGE ou a instrução DDL CREATE PACKAGE.

Etapas para criar uma especificação de pacote usando a ferramenta Create Package:

  1. No quadro Conexões, expanda hr_conn.

  2. Na lista de tipos de objeto de esquema, clique com o botão direito do mouse em Pacotes.

  3. Na lista de opções, clique em Novo Pacote.

    A janela Criar pacote é aberta. O campo Esquema tem o valor HR, o campo Nome tem o valor padrão PACKAGE1 e a caixa De seleção Adicionar Nova Origem em Letras Minúsculas está desmarcada.

  4. Para Esquema, aceite o valor padrão, HR.

  5. Para Nome, altere o valor PACKAGE1 para EMP_EVAL.

  6. Clique em OK.

    O painel EMP_EVAL é aberto, mostrando a instrução CREATE PACKAGE que criou o pacote:

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

    O título do painel está em itálico, indicando que o pacote não foi salvo no banco de dados.

  7. (Opcional) Na instrução CREATE PACKAGE, substitua o comentário por declarações.

    Se você não fizer essa etapa agora, poderá fazer mais tarde, como em "Tutorial: Alterando uma Especificação de Pacote".

  8. No menu Arquivo, selecione Salvar.

    O Oracle Database compila e salva o pacote. O título do painel EMP_EVAL não está mais na fonte em itálico.

Consulte Também: Referência de Linguagem do Oracle Database PL/SQL para obter informações sobre a instrução CREATE PACKAGE (para a especificação do pacote)

Tutorial: Alterando a Especificação de um Pacote

Este tutorial mostra como usar a ferramenta Editar para alterar a especificação para o pacote EMP_EVAL, que aparece em muitos tutoriais e exemplos neste documento. Especificamente, o tutorial mostra como adicionar declarações para um procedimento, EVAL_DEPARTMENT e uma função, CALCULATE_SCORE.

Para alterar uma especificação de pacote, use a ferramenta Editar do SQL Developer ou a instrução DDL CREATE PACKAGE com a cláusula OR REPLACE.

Etapas para alterar a especificação de pacote EMP_EVAL usando a ferramenta Editar:

  1. No quadro Conexões, expanda hr_conn.

  2. Na lista de tipos de objeto de esquema, expanda Pacotes.

  3. Na lista de pacotes, clique com o botão direito em EMP_EVAL.

  4. Na lista de opções, clique em Editar.

    O painel EMP_EVAL é aberto, mostrando a instrução CREATE PACKAGE que criou o pacote:

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

    O título do painel não está em itálico, indicando que o pacote está salvo no banco de dados.

  5. No painel EMP_EVAL, substitua o comentário por este código:

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

    O título do painel EMP_EVAL é alterado para fonte em itálico, indicando que as alterações não foram salvas no banco de dados.

  6. Clique no ícone Compilar.

    A especificação de package alterada é compilada e salva no banco de dados. O título do painel EMP_EVAL não está mais na fonte em itálico.

Consulte Também: Referência de Linguagem PL/SQL do Oracle Database para obter informações sobre a instrução CREATE PACKAGE com a cláusula OR REPLACE

Tutorial: Criando um Corpo de Pacote

Este tutorial mostra como usar a ferramenta Criar Corpo para criar um corpo para o pacote EMP_EVAL, que aparece em muitos exemplos e tutoriais neste documento.

Para criar um corpo de pacote, use as ferramentas SQL Developer CREATE BODY ou a instrução DDL CREATE PACKAGE BODY.

Etapas para criar um corpo para o pacote EMP_EVAL usando a ferramenta Create Body:

  1. No quadro Conexões, expanda hr_conn.

  2. Na lista de tipos de objeto de esquema, expanda Pacotes.

  3. Na lista de pacotes, clique com o botão direito em EMP_EVAL.

  4. Na lista de opções, clique em Criar Corpo.

    O painel Corpo EMP_EVAL é exibido, mostrando o código gerado automaticamente para o corpo do pacote:

     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;
    

    O título do painel é em itálico, indicando que o código não está salvo no banco de dados.

  5. (Opcional) Na instrução CREATE PACKAGE BODY:

    • Substitua os comentários por instruções executáveis.

    • (Opcional) Na parte executável do procedimento, exclua NULL ou substitua-o por uma instrução executável.

    • (Opcional) Na parte executável da função, substitua NULO por outra expressão.

    Se você não concluir esta etapa agora, poderá fazê-la mais tarde, como em "Tutorial: Declarando Variáveis e Constantes em um Subprograma".

  6. Clique no ícone Compilar.

    O corpo do pacote alterado é compilado e salvo no banco de dados. O título do painel Corpo EMP_EVAL não está mais em itálico.

Consulte Também: Referência de Linguagem do Oracle Database PL/SQL para obter informações sobre a instrução CREATE PACKAGE BODY (para o corpo do pacote)

Eliminando um Pacote

Para eliminar um pacote (especificação e corpo), use o quadro Conexões do SQL Developer e a ferramenta Eliminar ou a instrução DDL DROP PACKAGE.

Cuidado: Não elimine o pacote EMP_EVAL—você precisa dele para tutoriais posteriores. Se quiser praticar a eliminação de pacotes, crie pacotes simples e, em seguida, elimine-os.

Etapas para eliminar um pacote usando a ferramenta Eliminar:

  1. No quadro Conexões, expanda hr_conn.

  2. Na lista de tipos de objeto de esquema, expanda Pacotes.

    É exibida uma lista de pacotes.

  3. Na lista de pacotes, clique com o botão direito do mouse no nome do pacote que será eliminado.

  4. Na lista de opções, clique em Eliminar Pacote.

  5. Na janela Eliminar, clique em Aplicar.

  6. Na janela Confirmação, clique em OK.

Consulte Também: Referência de Linguagem PL/SQL do Oracle Database para obter informações sobre a instrução DROP PACKAGE