[firebase-br] Procedure com decimal (18,18)

Elton da Motta Barbosa embarbosa em gmail.com
Seg Ago 2 11:09:05 -03 2010


>Magnun, vc pode até criar um campo com esta precisão, porém salvo
>engano o Firebird só comporta no máximo 16 casas decimais.
>...

Não necessariamente...

SET TERM ^ ;

CREATE OR ALTER PROCEDURE NEW_PROCEDURE
returns (
    valor decimal(18,17))
as
begin
  valor = cast((65.000000000/12.00000000) as decimal(18,17));
  suspend;
end
^

SET TERM ; ^

Ele só armazenou 16 casas no seu exemplo pois o seu resultado já havia
tomado duas casas na parte inteira.
O Firebird não vai conseguir armazenar 18 com 18 de precisão pois
sempre vai precisar de pelo menos uma casa para a parte inteira, mesmo
que seja pra mostrar zero.
Então o máximo é 17. A menos que alguém me corrija com alguma documentação.




Mais detalhes sobre a lista de discussão lista