[firebase-br] Executar procedure no Select Firebird

Sandro Souza escovadordebits em gmail.com
Ter Jan 31 11:41:02 -03 2012


Bom dia/tarde Alex.

Vamos a um pequeno exemplo, uma stored procedure selecionável que retorna a
diferença de dias entre duas datas informadas:

SET TERM ^ ;
CREATE PROCEDURE *DIFERENCA_DE_DIAS*(
    *DATAHORA1* TIMESTAMP,
    *DATAHORA2* TIMESTAMP)
RETURNS(
    *RESULTADO* INTEGER)
AS
BEGIN
  RESULTADO = CAST((CAST(SUBSTRING(CAST(DATAHORA1 AS VARCHAR(24))FROM 1 FOR
10) AS TIMESTAMP) - CAST(SUBSTRING(CAST(DATAHORA2 AS VARCHAR(24))FROM 1 FOR
10) AS TIMESTAMP))AS INTEGER);
  SUSPEND;
END^
SET TERM ; ^

Basicamente, você pode acrescentar essa stored procedure a um comando
SELECT como se ela fosse uma tabela ou visão, como no seguinte exemplo:

SELECT * FROM *DIFERENCA_DE_DIAS*(*'2012-02-15'*,*'2012-01-15'*);

Retornará:

RESULTADO
---------
31

Como uma stored procedure selecionável pode retornar mais de um parâmetro,
você pode informar os parâmetros desejados como se fossem campos/colunas,
como no seguinte exemplo:

SELECT *RESULTADO* FROM *DIFERENCA_DE_DIAS*(*'2012-02-15'*,*'2012-01-15'*);

Nesses exemplos, eu informei datas como string, mas pode ser qualquer valor
do tipo TIMESTAMP, seja uma string que represente esse valor, seja um
campo/coluna alguma tabela ou visão, e assim por diante.

Você pode usar a sua imaginação para inventar formas de combinar as stored
procedures selecionáveis dentro de um SELECT.

Espero ter lhe ajudado mais que atrapalhado. :D

Em 31 de janeiro de 2012 10:21, Alex Miranda de Oliveira <
alexsistemass em gmail.com> escreveu:

> Bom dia Pessoal
>
>
>  Estou precisando executar uma procedure em um select e trazer um retorno
> dela para o select não sei como estar fazendo isto..
>
>
> Preciso passar dois parametros e pegar um retorno que e um campo.
>
>
> Obrigado ate ++
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista