Criando e Gerenciando Subprogramas Standalone
Você pode criar e gerenciar subprogramas PL/SQL autônomos.
Observação: Para fazer os tutoriais deste documento, você deve estar conectado ao Oracle Database como o usuário HR do SQL Developer.
Sobre Estrutura de Subprogramas
Um subprograma segue a estrutura de bloco PL/SQL; ou seja, tem:
-
Parte declarativa (opcional)
A parte declarativa contém declarações de tipos, constantes, variáveis, exceções, cursores declarados e subprogramas aninhados. Esses itens são locais para o subprograma e param de existir quando o subprograma conclui a execução.
-
Peça executável (obrigatório)
A parte executável contém instruções que atribuem valores, execução de controle e manipula dados.
-
Peça de tratamento de exceções (opcional)
A parte de tratamento de exceção contém um código que trata exceções (erros no tempo de execução).
Comentários podem aparecer em qualquer lugar no código PL/SQL. O compilador de PL/SQL ignora-os. Adicionar comentário em seu programa promover a capacidade de leitura e ajuda a entendê-lo. Um comentário de linha única começa com um hífen duplo (--) e se estende até o final da linha. Um comentário de várias linhas começa com uma barra e um asterisco (/*) e termina com um asterisco e uma barra (*/).
A estrutura de um procedimento é:
PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
A estrutura de uma função é como a de um procedimento, exceto pelo fato de ela incluir uma cláusula RETURN e pelo menos uma instrução RETURN (e algumas cláusulas opcionais que estão além do escopo deste documento):
FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
-- at least one statement must be a RETURN statement
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
O código que começa com PROCEDURE ou FUNCTION e termina antes de IS ou AS ser a assinatura de subprograma. As partes declarativa, executável e de tratamento de exceção compreendem o corpo de subprograma. A sintaxe do handler de exceção está em "Sobre Exceções e Handlers de Exceção".
Consulte Também: Referência da Linguagem PL/SQL do Oracle Database para mais informações sobre partes de subprogramas
Tutorial: Criando um Procedimento Independente
Este tutorial mostra como usar a ferramenta Criar Procedimento para criar um procedimento stand-alone chamado ADD_EVALUATION que adiciona uma linha à tabela EVALUATIONS.
A tabela EVALUATIONS foi criada em Exemplo 4-1.
Para criar um procedimento stand-alone, use a ferramenta SQL Developer CREATE PROCEDURE ou a instrução DDL CREATE PROCEDURE.
Etapas para criar um procedimento independente usando a ferramenta Create Procedure:
-
No quadro Conexões, expanda hr_conn.
-
Na lista de tipos de objeto de esquema, clique com o botão direito do mouse em Procedimentos.
-
Na lista de opções, clique em Novo Procedimento.
A janela Criar procedimento é aberta.
-
Para Esquema, aceite o valor padrão, HR.
-
Para Nome, altere PROCEDURE1 para
ADD_EVALUATION. -
Clique no ícone Adicionar Parâmetro.
É exibida uma linha sob os cabeçalhos das colunas. Seus campos têm os seguintes valores padrão: Nome, PARAM1; Modo, IN; Sem Cópia, desmarcado; Tipo de Dados, VARCHAR2; Valor Padrão, vazio.
-
Para Nome, altere PARAM1 para
EVALUATION_ID. -
Para Modo, aceite o valor padrão, IN.
-
Para Tipo de Dados, selecione NÚMERO no menu.
-
Deixe Valor Default vazio.
-
Adicione um segundo parâmetro repetindo as etapas de 6 a 10 com o Nome
EMPLOYEE_IDe o NÚMERO do Tipo de Dados. -
Adicione um terceiro parâmetro repetindo as etapas de 6 a 10 com o Nome
EVALUATION_DATEe a DATA do Tipo de Dados. -
Adicione um quarto parâmetro repetindo as etapas 6 a 10 com o Nome
JOB_IDe as Etapas do Tipo de Dados VARCHAR2. -
Adicione um quinto parâmetro repetindo as etapas de 6 a 10 com o Nome
MANAGER_IDe o NÚMERO DO Tipo de Dados. -
Adicione um sexto parâmetro repetindo as etapas de 6 a 10 com o Nome
DEPARTMENT_IDe o NÚMERO do Tipo de Dados. -
Adicione um sétimo parâmetro repetindo as etapas de 6 a 10 com o Nome
TOTAL_SCOREe o NÚMERO do Tipo de Dados. -
Clique em OK.
CREATE OR REPLACE PROCEDURE ADD_EVALUATION ( EVALUATION_ID IN NUMBER , EMPLOYEE_ID IN NUMBER , EVALUATION_DATE IN DATE , JOB_ID IN VARCHAR2 , MANAGER_ID IN NUMBER , DEPARTMENT_ID IN NUMBER , TOTAL_SCORE IN NUMBER ) AS BEGIN NULL; END ADD_EVALUATION;O título do painel ADD_EVALUATION está em fonte itálica, indicando que o procedimento ainda não foi salvo no banco de dados.
Como a parte de execução do procedimento contém apenas a instrução NULL, o procedimento não faz nada.
-
Substitua a instrução NULL por esta instrução:
INSERT INTO EVALUATIONS ( evaluation_id, employee_id, evaluation_date, job_id, manager_id, department_id, total_score ) VALUES ( ADD_EVALUATION.evaluation_id, ADD_EVALUATION.employee_id, ADD_EVALUATION.evaluation_date, ADD_EVALUATION.job_id, ADD_EVALUATION.manager_id, ADD_EVALUATION.department_id, ADD_EVALUATION.total_score );(A qualificação de nomes do parâmetro com o nome do procedimento assegura que eles não sejam confundidos com as colunas que têm os mesmos nomes.)
-
No menu Arquivo, selecione Salvar.
O Oracle Database compila o procedimento e o salva. O título do painel ADD_EVALUATION não fica mais na fonte em itálico. O painel Mensagem - Log tem a mensagem Compiled.
Consulte também:
-
Oracle SQL Developer User's Guide para obter outro exemplo de como usar o SQL Developer para criar um procedimento standalone
-
"Sobre Instruções DDL (Data Definition Language)" para obter informações gerais que se aplicam à instrução CREATE PROCEDURE
-
Referência de Linguagem PL/SQL do Oracle Database para informações sobre a instrução CREATE PROCEDURE
Tutorial: Criando uma Função Independente
Este tutorial mostra como usar a ferramenta Criar Função para criar uma função stand-alone chamada CALCULATE_SCORE que tem três parâmetros e retorna um valor do tipo NUMBER.
Para criar uma função stand-alone, use as ferramentas SQL Developer CREATE FUNCTION ou a instrução DDL CREATE FUNCTION.
Etapas para criar uma função independente usando a ferramenta Criar Função:
-
No quadro Conexões, expanda hr_conn.
-
Na lista de tipos de objeto de esquema, clique com o botão direito do mouse em Funções.
-
Na lista de opções, clique em Nova Função.
A janela Criar Função é aberta.
-
Para Esquema, aceite o valor padrão, HR.
-
Para Nome, altere FUNCTION1 para
CALCULATE_SCORE. -
Para Tipo de Devolução, selecione NÚMERO no menu.
-
Clique no ícone Adicionar Parâmetro.
É exibida uma linha sob os cabeçalhos das colunas. Seus campos têm os seguintes valores padrão: Nome, PARAM1; Modo, IN; Sem Cópia, desmarcado; Tipo de Dados, VARCHAR2; Valor Padrão, vazio.
-
Para Nome, altere PARAM1 para
cat. -
Para Modo, aceite o valor padrão, IN.
-
Para Tipo de Dados, aceite o padrão, VARCHAR2.
-
Deixe Valor Default vazio.
-
Adicione um segundo parâmetro repetindo as etapas 7 a 11 com o Nome
scoree o NÚMERO do Tipo de Dados. -
Adicione um terceiro parâmetro repetindo as etapas de 7 a 11 com o Nome
weighte o NÚMERO do Tipo de Dados. -
Clique em OK.
O painel CALCULATE_SCORE é aberto, mostrando a instrução CREATE FUNCTION que criou a função:
CREATE OR REPLACE FUNCTION CALCULATE_SCORE ( CAT IN VARCHAR2 , SCORE IN NUMBER , WEIGHT IN NUMBER ) RETURN NUMBER AS BEGIN RETURN NULL; END CALCULATE_SCORE;O título do painel CALCULATE_SCORE está em fonte itálica, indicando que a função ainda não foi salva no banco de dados.
Como a única instrução na parte de execução da função é a instrução RETURN NULL, a função não faz nada.
-
Substitua NULL por
score * weight. -
No menu Arquivo, selecione Salvar.
O Oracle Database compila e salva a função. O título do painel CALCULATE_SCORE não fica mais na fonte em itálico. O painel Mensagem - Log tem a mensagem
Compiled.
Consulte também:
-
"Sobre Instruções DDL (Data Definition Language)" para obter informações gerais que se aplicam à instrução CREATE FUNCTION
-
Referência da Linguagem PL/SQL do Oracle Database para informações sobre a instrução CREATE FUNCTION
Alterando Subprogramas Stand-alone
Para alterar um subprograma stand-alone, use a ferramenta Edição do SQL Developer ou a instrução DDL ALTER PROCEDURE ou ALTER FUNCTION.
Etapas para alterar um subprograma standalone usando a ferramenta Editar:
-
No quadro Conexões, expanda hr_conn.
-
Na lista de tipos de objeto de esquema, expanda Funções ou Procedimentos.
Uma lista de funções ou procedimentos é exibida.
-
Clique na função ou procedimento a ser alterado.
À direita do quadro Conexões, um quadro é exibido. Sua guia superior tem o nome do subprograma a ser alterado. O painel Código mostra o código que criou o subprograma.
O painel Código está no modo de gravação. (Clicar no ícone de lápis alterna o modo de gravação para somente leitura, ou o inverso.)
-
No painel Código, altere o código.
O título do painel muda para formato de fonte itálico, indicando que a alteração ainda não foi salva no banco de dados.
-
No menu Arquivo, selecione Salvar.
O Oracle Database compila e salva o subprograma. O título do painel não é mais exibido no formato de fonte itálico. O painel Mensagem - Log tem a mensagem
Compiled.
Consulte também:
-
"Sobre Instruções DDL (Data Definition Language)" para obter informações gerais que se aplicam às instruções ALTER PROCEDURE e ALTER FUNCTION
-
Referência da Linguagem PL/SQL do Oracle Database para informações sobre a instrução ALTER PROCEDURE
-
Referência de Linguagem PL/SQL do Oracle Database para saber mais sobre a instrução ALTER FUNCTION
Tutorial: Testando uma Função Independente
Este tutorial mostra como usar a ferramenta SQL Developer Run para testar a função standalone CALCULATE_SCORE.
Etapas para testar a função CALCULATE_SCORE usando a ferramenta Executar:
-
No quadro Conexões, expanda hr_conn.
-
Na lista de tipos de objeto de esquema, expanda Funções.
-
Na lista de funções, clique com o botão direito no CALCULATE_SCORE.
-
Na lista de opções, clique em Executar.
A janela Executar PL/SQL é aberta. O quadro Bloco PL/SQL inclui este código:
v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => SCORE, WEIGHT => WEIGHT ); -
Altere os valores de SCORE e WEIGHT para
8e0.2, respectivamente:v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => 8, WEIGHT => 0.2 ); -
Clique em OK.
No painel Código, a janela Execução é aberta, mostrando este resultado:
Connecting to the database hr_conn. Process exited. Disconnecting from the database hr_conn.À direita da guia Running está a guia Output Variables.
-
Clique na guia Variáveis de Saída.
Dois quadros aparecem, Variável e Valor, que contêm os valores <Return Value> e 1,6, respectivamente.
Consulte Também: Oracle SQL Developer User's Guide para obter informações sobre como usar o SQL Developer para executar e depurar procedimentos e funções
Eliminando Subprogramas Standalone
Para eliminar um subprograma standalone, use o quadro Conexões do SQL Developer e a ferramenta Eliminar ou a instrução DDL PROCEDIMENTO DE DROP ou FUNÇÃO DE DROP.
Cuidado: Não elimine o procedimento ADD_EVALUATION ou a função CALCULATE_SCORE — você precisa deles para tutoriais posteriores. Se quiser praticar a eliminação de subprogramas, crie subprogramas simples e, em seguida, elimine-os.
Etapas para eliminar um subprograma stand-alone usando a ferramenta Eliminar:
-
No quadro Conexões, expanda hr_conn.
-
Na lista de tipos de objeto de esquema, expanda Funções ou Procedimentos.
-
Na lista de funções ou procedimentos, clique com o botão direito do mouse no nome da função ou procedimento a ser eliminado.
-
Na lista de opções, clique em Eliminar.
-
Na janela Eliminar, clique em Aplicar.
-
Na janela Confirmação, clique em OK.
Consulte também:
-
"Sobre Instruções DDL (Data Definition Language)" para obter informações gerais que se aplicam às instruções DROP PROCEDURE e DROP FUNCTION
-
Oracle Database SQL Language Reference para mais informações sobre a instrução DROP PROCEDURE
-
Referência de Linguagem SQL do Oracle Database para informações sobre a instrução FUNCTION DROP