Olá galera, nesta Quick Tips, irei mostrar como podemos trabalhar com Stored Procedure e Triggers no Firebird.

 

Mas o que seria uma Stored Procedure?

            Uma Stored Procedure é um programa escrito numa linguagem própria para Procedures no Firebird, sendo armazenada como parte do banco de dados. Podem ser acessadas através de aplicações clientes (sistemas externos), ou até mesmo por outras Stored Procedures ou Triggers.

 

Mas o que seria uma Trigger?

            Uma Trigger é praticamente a mesma coisa que uma Stored Procedure, porém a única diferença é a forma como ela é chamada. Estas são chamadas sem a intervenção direta de um usuário, mas sim quando ocorre uma alteração em uma linha de uma tabela.

 

Vamos agora para a prática.

 

CREATE PROCEDURE

Stored Procedures são criadas através do comando CREATE PROCEDURE veja a sintaxe:

 

CREATE PROCEDURE NomedaProcedure

<parâmetros de entrada>

RETURNS

<parâmetros de saída>

AS

<declaração de variáveis locais>

BEGIN

<comandos da procedures>

END

 

Parâmetros de Entrada:

            Permitem que a aplicação cliente passe valores para serem utilizados dentro da Stored Procedure.

 

Parâmetros de Saída ou de retorno:

            Permitem que a Stored Procedure retorne valores para a aplicação cliente

 

Veja agora um exemplo prático de Stored Procedure

 

CREATE PROCEDURE TOTALCLIENTE(

HEAD_DEPT CHAR(3)

)

RETURNS (

CLIENTECOUNT INTEGER

)

AS

BEGIN

begin                         

  SELECT COUNT(*) FROM CLIENTE INTO :CLIENTECOUNT;

  suspend;                                        

END ^

 

Veja agora um exemplo prático de Trigger

 

CREATE TRIGGER CLIENTE_BI FOR CLIENTE

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

  IF (NEW.IDCLIENTE IS NULL) THEN

    NEW.IDCLIENTE = GEN_ID(,1);

END

 

Variáveis Locais

            Podemos declarar varáveis locais de qualquer tipo existente no Firebird numa Stored Procedure. Estas só existem quando a Stored Procedure esta em execução, veja a sintaxe:

 

DECLARE VARIABLE <Nome variável> <Tipo variável>

 

Veja agora um exemplo prático

 

DECLARE VARIABLE TotalCliente Integer;

DECLARE VARIABLE SaldoTotal NUMERIC(15,2);

 

 

Observe que existe o comando DECLARE VARIABLE tem que ser implementado toda vez que formos criar uma variável.

 

Veja agora um exemplo prático

 

CREATE PROCEDURE TOTALFUNCIONARIOS(

HEAD_DEPT CHAR(3)

)

RETURNS (

FUNCIONARIOCOUNT INTEGER

)

AS

BEGIN

begin                         

  SELECT COUNT(*) FROM FUNCIONARIO INTO :FUNCIONARIOCOUNT;

  suspend;                                        

END ^

 

Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

Wesley Y

wesley@lithic.com.br