valor than specified que precisión permite para ora mayor larger for esta especificada column allowed sql oracle

sql - than - ora 01438 valor mayor que el que permite la precisión especificada para esta column



"ORA-01438: valor mayor que la precisión especificada permitida para esta columna" al insertar 3 (2)

Me estoy encontrando con ese error cuando intento insertar cualquier número excepto 0 en un campo con formato NÚMERO (2,2).

UPDATE PROG_OWN.PROG_TPORCENTAJE_MERMA SET PCT_MERMA = 3 WHERE IDN_PORCENTAJE_MERMA = 1

[Código de error: 1438, estado de SQL: 22003] ORA-01438: valor mayor que la precisión especificada permitida para esta columna

COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PCT_MERMA 3 NUMBER 2 0 2

También sucede si intento con números decimales.

¿Alguna idea de por qué?


NUMBER (precision, scale) significa el número de precision de los dígitos totales, cuyos dígitos de scale están a la derecha del punto decimal.

NUMBER(2,2) en otras palabras significa un número con 2 dígitos, ambos decimales. Puede querer usar NUMBER(4,2) para obtener 4 dígitos, de los cuales 2 son decimales. Actualmente puede simplemente insertar valores con una parte entera cero.

Más información en los documentos de Oracle .


No se puede actualizar con un número mayor que 1 para el tipo de datos number(2,2) es porque, el primer parámetro es el número total de dígitos en el número y el segundo (es decir, 2 aquí) es el número de dígitos en parte decimal Supongo que puede insertar o actualizar datos < 1 . es decir, 0,12, 0,95, etc.

Por favor marque NUMBER DATATYPE en NUMBER Datatype .