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