1. Introdução
Os parâmetros de saída são utilizados pelas procedures para que o aplicativo que a chamou possa obter as informações computadas pela mesma - seja esse aplicativo o SQL*Plus ou um programa desenvolvido em qualquer linguagem, como PHP, Delphi, Java, etc. A palavra chave OUT é utilizada para indicar à linguagem PL/SQL que o parâmetro é direcionado para saída.
Artigo: Estrutura
2. Criação de Stored Procedure com parâmetro de saída (OUT)
O código abaixo cria uma procedure PL/SQL chamada “p_esfera” que recebe o raio de uma esfera em um parâmetro de entrada, computa o volume da mesma e retornar este valor computado em um parâmetro de saída.
Listagem 1: Stored Procedure “p_esfera”
CREATE OR REPLACE PROCEDURE p_esfera(r IN NUMBER,
V OUT NUMBER) IS
/* -----------------------------------------------------------
PROCEDURE : p_esfera
DESCRIÇÃO : recebe como entrada o raio de uma esfera e retorna
o volume na saída.
PARÂMETROS: r -> ENTRADA. Valor do raio da esfera
V -> SAÍDA. Volume calculado da esfera
----------------------------------------------------------- */
PI CONSTANT NUMBER := 3.14; -- declaração da constante “PI”
BEGIN
-- volume da esfera: 4/3 * pi * r ao cubo
V := 4 / 3 * PI * (r * r * r);
END p_esfera;
/
Note que a criação de um procedimento com parâmetro de saída não apresenta nenhuma novidade, excetuando o uso da palavra reservada OUT. No entanto, a execução da procedure no SQL*Plus requer um passo adicional. É preciso executá-la através do que chamamos de “bloco anônimo de código PL/SQL”.
Um bloco anônimo é um trecho livre de código digitado no SQL*Plus que não é transformado em procedimento ou função e que, por isso, não fica gravado em banco (ele “morre” logo após ser executado). O bloco anônimo é normalmente utilizado apenas quando queremos testar um programa via SQL*Plus.
A seguir apresenta-se um exemplo de bloco anônimo para o teste de nossa procedure “p_esfera”. Inicialmente é preciso usar o comando DECLARE para especificarmos as variáveis que serão utilizadas como parâmetros de entrada e saída da procedure. Em seguida, a chamada do procedimento e a impressão do conteúdo das variáveis é realizada dentro de um bloco delimitado por BEGIN e END.
Listagem 2: Execução de “p_esfera” no SQL*Plus
DECLARE
vRaio NUMBER;
vVolume NUMBER;
BEGIN
vRaio := 10;
p_esfera(vRaio,vVolume); -- chamada da procedure
-- imprime o conteúdo das variáveis
DBMS_OUTPUT.PUT_LINE('Raio e Volume da Esfera:');
DBMS_OUTPUT.PUT_LINE(vRaio);
DBMS_OUTPUT.PUT_LINE(vVolume);
END;
/
Raio e Volume da Esfera:
10
4186,66666666666666666666666666666666666
Procedimento PL/SQL concluído com sucesso.
SQL>
Um bloco anônimo de código PL/SQL é um recurso usado no SQL*Plus quase sempre com a finalidade de fazer teste e depuração de programas PL/SQL. Ele não fica armazenado no banco.
Ambientes de programação como .NET, Java, PHP e outras, utilizam componentes de software para possibilitar a execução de stored procedures. Estes componentes oferecem opções para a configuração de parâmetros de entrada e saída (ex: um parâmetro de saída retornado pelo Oracle é automaticamente associado a uma variável .NET).
Bom assim finalizo este artigo, um abraço e até o próximo