Подтвердить что ты не робот

"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

Это также случается, если я пытаюсь использовать десятичные числа.

Любая идея, почему?

4b9b3361

Ответ 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.