[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