Create Procedure no Banco de Dados
Cria uma Stored Procedure “SP” e, define seus parâmetros de entrada e saída e o corpo da procedure. Uma SP é escrita em “linguagem” Interbase, e armazenada no próprio Banco de Dados. Stored Procedure´s aceita todas as sentenças de manipulação de Dados e algumas extensões avançadas do InterBase, como :
IF..THEN..ELSE, WHILE…DO, FOR SELECT..DO, EXCEPTIONS …
Existem dois tipos de SP :
Select Procedure : Utilizada na cláusula FROM do comando SELECT, como se fosse uma tabela e ou uma View. Este tipo de SP, deve obrigatoriamente retornar uma ou mais linhas de dados, caso contrário, ocorre um erro. Para retornar uma linha, use SUSPEND, para retornar uma ou mais linhas, use FOR SELECT…. DO e SUSPEND. Isto fará com que os parâmetros de retorno sejam preenchidos com a linha de retorno.
Executable Procedure : Utilizada no comando EXECUTE PROCEDURE, para realizar uma ou mais tarefas, mas, não retorna dados.
Sintaxe :
CREATE PROCEDURE name
[( param datatype [, param datatype …])]
[RETURNS ( param datatype [, param datatype …])]
AS
<procedure_body>;
< procedure_body>=[<variable_declaration_list>]
< block>
< variable_declaration_list>=
DECLARE VARIABLE var datatype;
[DECLARE VARIABLE var datatype; …]
<block> =
BEGIN
< compound_statement>
[< compound_statement>…]
END
< compound_statement>={<block> | statement;}
Ex :
CREATE PROCEDURE RESUMO_VENDAS ( VENDEDOR INTEGER) RETURNS ( VALOR_TOTAL DOUBLE PRECISION, MEDIA DOUBLE PRECISION VALOR_MIN DOUBLE PRECISION, VALOR_MAX DOUBLE PRECISION ) AS
BEGIN
SELECT SUM(VALOR), AVG(VALOR), MIN(VALOR), MAX(VALOR) FROM VENDAS WHERE IDVENDEDOR = :VENDEDOR INTO :VALOR_TOTAL, :MEDIA, :VALOR_MIN, :VALOR_MAX;
EXIT;
END
SELECT * FROM RESUMO_VENDAS 10;
“10, Neste caso é o código do vendedor”.