"ORA-01438: значение, превышающее указанную точность, разрешенную для этого столбца" при вставке 3
Я использую эту ошибку при попытке вставить любое число, кроме 0, в поле с форматом NUMBER (2,2).
UPDATE
PROG_OWN.PROG_TPORCENTAJE_MERMA
SET
PCT_MERMA = 3
WHERE
IDN_PORCENTAJE_MERMA = 1
[Код ошибки: 1438, Состояние SQL: 22003] ORA-01438: значение, превышающее указанную точность, разрешено для этого столбца
COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS
PCT_MERMA 3 NUMBER 2 0 2
Это также случается, если я пытаюсь использовать десятичные числа.
Любая идея, почему?
Ответы
Ответ 1
Вы не можете обновить с номером больше 1 для типа данных number(2,2)
, потому что первым параметром является общее количество цифр в числе и второе (здесь примерно 2), это число цифр в десятичная часть. Я думаю, вы можете вставлять или обновлять данные < 1
. то есть 0,12, 0,95 и т.д.
Пожалуйста, проверьте NATBER DATATYPE в NUMBER Datatype.
Ответ 2
NUMBER (precision, scale)
означает precision
количество полных цифр, из которых scale
цифры правы от десятичной точки.
NUMBER(2,2)
другими словами означает число с двумя цифрами, обе из которых являются десятичными. Вы можете использовать NUMBER(4,2)
для получения 4 цифр, из которых 2 являются десятичными знаками. В настоящее время вы можете просто вставлять значения с нулевой целой частью.
Дополнительная информация в документах Oracle.