Oracle
 sql >> Database >  >> RDS >> Oracle

Come gestire la perdita di precisione sui tipi numerici JDBC a causa delle funzioni di raggruppamento

Questa è una speculazione basata su un comportamento simile nel driver Postgres postgresql-9.4-1204-jdbc42.jar .

Per un NUMERIC non specificato il database non sembra memorizzare alcuna informazione particolare sulla precisione e la scala della colonna. Ciò consente al database di archiviare internamente il valore in qualsiasi modo sembri adatto. Da https://www.postgresql.org/docs/current/ static/datatype-numeric.html

Dal driver non sa quale sia il massimo specifico dell'implementazione del server cioè, non può restituire i valori effettivi. Restituisce 0 per indicare che non conosce i valori effettivi e non vuole fare ipotesi plausibili.

Sembra che la situazione sia la la stessa con Oracle . La precisione massima potrebbe essere maggiore, ma portabilità è garantito solo fino a 38 cifre.

Per quanto riguarda la risoluzione del problema nella domanda, come indicato da StanislavL, puoi forzare il valore a una precisione/scala specifica mediante casting.