ORA-01438: Значение превышает точность, допустимую для этого столбца
OracleЧто это значит?
В столбец NUMBER записано число, превышающее заданные пределы точности и масштаба. Например, значение с 3-значной целой частью не помещается в столбец NUMBER(4,2).
Почему возникает?
Определение NUMBER(p,s) столбца слишком узкое для данных; результат вычисления больше ожидаемого; десятичный масштаб сокращает число разрядов для целой части (NUMBER(5,3) допускает только 2 целых разряда).
Как исправить
Расширьте ёмкость столбца в соответствии с реальным диапазоном данных: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Округляйте значение в приложении или приводите его к масштабу с помощью ROUND/TRUNC. Чтобы найти переполняющую строку, сужайте запрос при тестировании и добавьте проверку входных данных.
Ещё по этой СУБД
- gc buffer busyОжидание (RAC): конкуренция за блок cache fusion, передаваемый между экземплярами
- library cache lockОжидание: конкуренция за дескриптор объекта library cache (сериализация parse/DDL)
- ORA-00604Ошибка на уровне рекурсивного SQL
- ORA-01400Невозможно вставить NULL в (столбец)
- ORA-02291Нарушено ограничение целостности — родительский ключ не найден
- ORA-02292Нарушено ограничение целостности — найдена дочерняя запись
- ORA-00979Выражение не входит в GROUP BY (not a GROUP BY expression)