[firebase-br] TRUNC em SQL - Alternativas

Daniel / Tecnobyte temp em tecnobyte.com.br
Qui Dez 16 16:58:25 -03 2004


Atualmente eu conheço duas formas de truncar um valor em Firebird:

1. UDF
2. CAST(CAST(Valor AS VARCHAR(30)) AS INTEGER)

A primeira forma depende de biblioteca externa e por isto evito usá-la para
não criar dependências. A segunda forma requer uma codificação muito
desajeitada e por isto também não vejo como uma forma muito boa.

Até onde sei o Firebird não dispõe de uma função interna para isto. Será que
em versões futuras isto vai existir? O Ansi SQL não prevê uma forma padrão
para truncar valores numéricos?

NOTA!

Até o atual momento minhas aplicações sempre trabalham com arredondamento e
fazer isto no Firebird é moleza. No entanto a legislação do ECF mudou e
agora obriga o uso de truncamento nos cálculos. Arredondamento não é mais
permitido, especialmente em equipamentos novos.

Então para atender à legislação devo alterar meus sistemas para trabalhar
também com truncamento. Será uma tarefa árdua, pois uso bastantes campos
calculados no DB, envolvendo multiplicações, etc. O problema principal agora
é a falta de uma função interna no Firebird para fazer o truncamento. Será
que a melhor alternativa é UDF mesmo?

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br





Mais detalhes sobre a lista de discussão lista