Parâmetro de entrada - Stored Procedures em PL/SQL
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=24300
Veja nestes terceiro artigo sobre stored procedures do PL/SQL aborda a utilização de parâmetros de entrada (IN).
Uma stored procedure é um módulo PL/SQL criado com o objetivo de executar uma ou mais ações. Os dois artigos anteriores desta série descreveram a sintaxe para criar procedures sem parâmetros. No entanto, na maior parte das aplicações práticas você precisará criar módulos PL/SQL capazes de se comunicar outro ambiente (ex: .NET, Java, Delphi, PHP) - o ambiente que representa o front end de seu sistema. Essa comunicação é feita através de parâmetros. Por exemplo: o módulo PL/SQL recebe um parâmetro do PHP, processa uma informação e devolve um resultado ao PHP (também através de um parâmetro).
Artigo anterior: Estrutura - Stored Procedures em PL/SQL
2.	Criação de Stored Procedure com parâmetro de entrada (IN)
Neste artigo mostraremos apenas a forma de criar uma procedure que recebe um parâmetro (ou seja, uma procedure com parâmetro de entrada). O código abaixo cria uma procedure PL/SQL chamada "p_milhas_para_km". Ela recebe como entrada o valor de uma distância em MILHAS e, em seguida, calcular e imprimir o valor equivalente em QUILÔMETROS.
Listagem 1: Stored Procedure "p_milhas_para_km"
CREATE OR REPLACE PROCEDURE p_milhas_para_km(vMilhas IN NUMBER) IS
PROCEDURE : p_milhas_para_km
DESCRIÇÃO : converte valor de distância em milhas para quilômetros
PARÂMETROS: vMilhas -> ENTRADA. Valor da distância em milhas
vKm      NUMBER;     -- receberá valor convertido para km
vKm := vMilhas * 1.61;
DBMS_OUTPUT.PUT_LINE('Distância em milhas: ' || TO_CHAR(vMilhas));
DBMS_OUTPUT.PUT_LINE('O valor equivalente em km é: ' || TO_CHAR(vKm));
END p_milhas_para_km;
Compile e execute o código no SQL*Plus para visualizar os resultados. Não esqueça de habilitar a saída do console, com SET SERVEROUT ON, como foi mostrado no primeiro artigo.
Listagem 2: Execução de p_milhas_para_km no SQL*Plus
SQL> EXEC p_milhas_para_km(10);
Distância em milhas: 10
O valor equivalente em km é: 16,1
A procedure foi definida com um parâmetro de entrada (read only) chamado "vMilhas", do tipo NUMBER. A palavra-reservada IN identifica o parâmetro como sendo do tipo "entrada". Existem também os parâmetros do tipo OUT e do tipo IN OUT (assuntos do próximo artigo). A figura abaixo mostra que uma procedure pode ser definida com muitos parâmetros, bastando dar o nome e o tipo de cada um deles e separar cada especificação usando virgula.
Figura 1. Estrutura da Procedure.
A variável "vKm" foi definida na seção de declarações. Esta variável é do tipo NUMBER. Para especificar uma variável em um módulo PL/SQL, é necessário indicar seu nome, seguido do tipo. A linha deve ser finalizada com ponto-e-vírgula. A figura abaixo mostra a forma para declarar diversas variáveis.
Figura 2.Declarando diversas variáveis.
Dentro do corpo principal, a instrução vKm := vMilhas * 1.61; representa o comando que converte o valor da distância em milhas para quilômetros, através de uma operação aritmética. O resultado é armazenado na variável vKm, com o uso do comando de atribuição " := ".
Nas linhas seguintes, o comando TO_CHAR é usado para converter os valores das variáveis do tipo NUMBER ("vMilhas" e "vKm") para CHAR, o que possibilita a concatenação destes valores com as mensagens que são apresentadas ao usuário.