[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