ORA-01438: value larger than specified precision allowed for this column
OracleWhat does it mean?
A number exceeding the defined precision and scale limits was written to a NUMBER column. For example, a value with a 3-digit integer part does not fit in a NUMBER(4,2) column.
Why does it happen?
The column's NUMBER(p,s) definition is too narrow for the data; a calculation result is larger than expected; the decimal scale reduces the digits left for the integer part (NUMBER(5,3) allows only 2 integer digits).
How to fix it
Widen the column capacity to match the real data range: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Round the value in the application, or fit it to the scale with ROUND/TRUNC. To find the overflowing row, narrow down your query while testing, and add input validation.
More from this engine
- gc buffer busyWait (RAC): contention for a cache-fusion block being transferred between instances
- library cache lockWait: contention on a library cache object handle (parse/DDL serialization)
- ORA-00604error occurred at recursive SQL level
- ORA-01400cannot insert NULL into (column)
- ORA-02291integrity constraint violated - parent key not found
- ORA-02292integrity constraint violated - child record found
- ORA-00979not a GROUP BY expression