Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment gérer la perte de précision sur les types numériques JDBC due aux fonctions de regroupement

Ceci est une spéculation basée sur un comportement similaire dans le pilote Postgres postgresql-9.4-1204-jdbc42.jar .

Pour un NUMERIC non spécifié la base de données ne semble pas stocker d'informations particulières sur la précision et l'échelle de la colonne. Cela permet à la base de données de stocker en interne la valeur de la manière qui lui semble appropriée. Depuis https://www.postgresql.org/docs/current/ static/datatype-numeric.html

Depuis le pilote ne sait pas quel est le maximum spécifique à l'implémentation du serveur c'est-à-dire qu'il ne peut pas renvoyer les valeurs réelles. Il renvoie 0 pour indiquer qu'il ne connaît pas les valeurs réelles et ne veut pas faire de suppositions éclairées.

On dirait que la situation est la la même chose avec Oracle . La précision maximale peut être plus élevée, mais la portabilité est garanti uniquement jusqu'à 38 chiffres.

En ce qui concerne la résolution du problème dans la question, comme l'a indiqué StanislavL, vous pouvez forcer la valeur à une précision/échelle spécifique en lançant.