[Sql] ORA-01438: значение, превышающее указанную точность, позволяет использовать этот столбец


Answers

Ошибка, похоже, не является одним из полей символов, но более числовым. (Если бы это была проблема с строкой, подобная WW, вы получили бы «значение слишком большое» или что-то подобное.) Вероятно, вы используете больше цифр, чем разрешено, например, 1000000001 в столбце, определяемом как число (10,2 ).

Посмотрите на исходный код, как упоминалось в WWW, чтобы выяснить, какой столбец может вызвать проблему. Затем проверьте данные, если это возможно, которые там используются.

Question

Иногда мы получаем следующую ошибку из базы данных нашего партнера:

<i>ORA-01438: value larger than specified precision allows for this column</i>

Полный ответ выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251"?>
<response>
  <status_code></status_code>
  <error_text>ORA-01438: value larger than specified precision allows for this column ORA-06512: at &quot;UMAIN.PAY_NET_V1_PKG&quot;, line 176 ORA-06512: at line 1</error_text>
  <pay_id>5592988</pay_id>
  <time_stamp></time_stamp>
</response>

Что может быть причиной этой ошибки?




В дополнение к предыдущим ответам вы должны заметить, что столбец, определенный как VARCHARS (10), сохранит 10 байтов , а не 10 символов, если вы не определяете его как VARCHAR2 (10 CHAR)

[Вопрос OP, похоже, связан с числом ... это на всякий случай, если у кого-то есть аналогичная проблема]




FYI: Числовые нарушения размера поля дадут ORA-01438: значение, превышающее указанную точность, разрешено для этого столбца

Нарушение длины поля VARCHAR2 даст ORA-12899: значение слишком велико для столбца ...

Oracle делает различие между типами данных столбца на основе кода ошибки и сообщения.




Из http://ora-01438.ora-code.com/ (окончательный ресурс вне Oracle Support):

ORA-01438 : значение, превышающее указанную точность, разрешено для этого столбца
Причина . При вставке или обновлении записей вводилось числовое значение, превышающее точность, определенную для столбца.
Действие : Введите значение, соответствующее точности числового столбца, или используйте параметр MODIFY с помощью команды ALTER TABLE, чтобы расширить точность.

http://ora-06512.ora-code.com/ :

ORA-06512 : при строковой строке
Причина . Сообщение Backtrace, поскольку стек разматывается необработанными исключениями.
Действие : Исправьте проблему, вызывающую исключение, или напишите обработчик исключений для этого условия. Или вам может потребоваться обратиться к администратору приложения или администратору базы данных.