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] > > > > ------------------------------------ > >