Dimas,

Mas se tens a rotina em Delphi porque não a adaptas para uso com Firebird ??

A sintaxe no firebird e praticamente a mesma..

Veja como fica o exemplo que te mandei:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE CALCULAIDADE (
     ddata date = current_date,
     ddataatual date = current_date)
returns (
     idade varchar(100),
     ianoidade integer,
     imesidade integer,
     idiaidade integer)
as
declare variable ianoatual integer = 0;
declare variable imesatual integer = 0;
declare variable idiaatual integer = 0;
declare variable iano integer = 0;
declare variable imes integer = 0;
declare variable idia integer = 0;
begin

    idade     = '';
    ianoidade = 0;
    imesidade = 0;
    idiaidade = 0;
    if (not ddata is null) then
    begin
       if (ddataatual is null) then
          ddataatual = current_date;
       ianoatual = extract(year from :ddataatual);
       imesatual = extract(month from :ddataatual);
       idiaatual = extract(day from :ddataatual);

       iano      = extract(year from :ddata);
       imes      = extract(month from :ddata);
       idia      = extract(day from :ddata);

       ianoidade = ianoatual - iano ;
       If ((iMesAtual<iMes) or
           ((iMesAtual=iMes) and (iDiaAtual<iDia)) ) then
       begin
            iAnoIdade = iAnoIdade - 1;
       end
       If (iMesAtual<iMes) then
       begin
         iMesIdade = 12-(iMes-iMesAtual);
       end
       else if (iMesAtual>iMes) then
       begin
         iMesIdade = iMesAtual-iMes;
         If (iDiaAtual<iDia) then
         begin
            iMesIdade = iMesIdade - 1;
         end
       end
       If (iDiaAtual<iDia) then
       begin
         iDiaIdade = iDiaAtual;
       end
       else
       begin
         iDiaIdade = iDiaAtual - iDia;
       end
    end
    idade = Cast(ianoidade as varchar(5))||' ano(s) '||Cast(imesidade as 
varchar(2))||' mes(s) '||Cast(idiaidade as varchar(2))||' dia(s)';
   suspend;
end^

SET TERM ; ^


Sucesso !!

Moacir



Em 31/03/2010 10:52, Dimas escreveu:
> Oi Moacir
>
>
>
> A rotina em Delphi eu tenho, quero criar uma procedure
>
> no FireBird que eu posso chamar atraves de um Select
>
> e ele me calcular a idade da pessoa, ou calcular
>
> qquer coisa que eu passe como parametro a Data e
>
> a procedure calcula com a data atual do servidor.
>
>
>
> Exemplo:
>
>
>
> Select PESSOA.NOME,
>
>            PESSOA.DATA_NASC,
>
>           CalculaIdade( PESSOA.DATA_NASC)
>
>
>
> Neste caso vai me retornar 3 campos, sendo o terceiro o calculo da idade.
>
>
>
> Obrigado.
>
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>    

Responder a