Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como lidar com a perda de precisão em tipos numéricos JDBC devido a funções de agrupamento


Isso é especulação baseada em comportamento semelhante no driver Postgres postgresql-9.4-1204-jdbc42.jar .

Para um NUMERIC não especificado o banco de dados parece não armazenar nenhuma informação específica sobre a precisão e a escala da coluna. Isso permite que o banco de dados armazene internamente o valor da maneira que parecer adequada. De https://www.postgresql.org/docs/current/ static/datatype-numeric.html

Como o motorista não sabe qual é o máximo específico de implementação do servidor é, ele não pode retornar os valores reais. Ele retorna 0 para indicar que não conhece os valores reais e não deseja fazer suposições educadas.

Parece que a situação é a mesma com a Oracle . A precisão máxima pode ser maior, mas portabilidade é garantido apenas até 38 dígitos.

Quanto a resolver o problema na pergunta, como StanislavL indicou, você pode forçar o valor para uma precisão/escala específica por conversão.