ORA-01438: value larger than specified precision allowed for this column (valor mayor que la precisión permitida para la columna)
Oracle¿Qué significa?
Se escribió en una columna NUMBER un número que supera los límites de precisión y escala definidos. Por ejemplo, un valor con parte entera de 3 dígitos no cabe en una columna NUMBER(4,2).
¿Por qué ocurre?
La definición NUMBER(p,s) de la columna es demasiado estrecha para los datos; el resultado de un cálculo es mayor de lo esperado; la escala decimal reduce los dígitos disponibles para la parte entera (NUMBER(5,3) permite solo 2 dígitos enteros).
Cómo solucionarlo
Amplíe la capacidad de la columna según el rango real de los datos: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Redondee el valor en la aplicación o ajústelo a la escala con ROUND/TRUNC. Para encontrar la fila que desborda, acote su consulta durante las pruebas y añada validación de entrada.
Más entradas de este motor
- gc buffer busyEspera (RAC): contención por un bloque de cache fusion que se transfiere entre instancias
- library cache lockEspera: contención en el handle de un objeto del library cache (serialización de parse/DDL)
- ORA-00604error occurred at recursive SQL level (error en el nivel de SQL recursivo)
- ORA-01400cannot insert NULL into (column) (no se puede insertar NULL en la columna)
- ORA-02291integrity constraint violated - parent key not found (violación de integridad: clave padre no encontrada)
- ORA-02292integrity constraint violated - child record found (violación de integridad: se encontró un registro hijo)
- ORA-00979not a GROUP BY expression (no es una expresión GROUP BY)