Neste artigo veremos como criar uma procedure simples no Firebird.

procedure no Firebird

Como podemos observar na figura àcima, na primeira sessão, onde temos pTIPO, definimos os parâmetros de entrada da procedure, no nosso caso definimos pTipo que será o filtro que usaremos na nossa listagem de clientes.

Mais abaixo em returns, declaramos os retornos da procedure, serão os campos do nosso select quando executarmos a procedure.

Dentro do corpo da procedure, temos FOR – SELECT – DO, nesta parte é onde fica nossa consulta, todo o resultado do select será retornado para os retornos definidos no INTO e para cada registro da consulta, será executado o comando dentro do bloco Begin-end após o DO.

No nosso caso, verificamos se o tipo do cliente é F ou J para descrever melhor o tipo.

Para executarmos a procedure basta dar um select e o resultado será como abaixo:

procedure no Firebird

Agora veremos como criar uma procedure dinâmica, onde montaremos nosso select dinamicamente e executaremos ele:

procedure no Firebird

Observe as alterações que fizemos na procedure em relação à procedure anterior. Nós tiramos o select de dentro do for e declaramos uma variável vSQL. Logo no inicio da procedure nós colocamos em nossa variável o nosso select sem o where.

Neste exemplo só filtraremos o tipo caso o mesmo seja diferente de “-“, isso nos dá mais flexibilidade do que na procedure anterior que sempre filtrávamos o tipo do cliente.

A mudança no for é que agora executamos a nossa consulta com o “execute statement” passando a nossa variável com nosso SQL. Daí em diante é a mesma rotina da procedure anterior.

Ao executarmos a procedure passando “-“, teremos o seguinte resultado:

procedure no Firebird

Como podemos ver, nossa procedure escrita de forma dinâmica ficou muito mais flexível, pois podemos montar nossos selects com base em condições específicas.