ORA-01722: Недопустимое число
OracleЧто это значит?
Строка символов, которую невозможно преобразовать в число, использована там, где требуется числовой контекст. Неявное или явное преобразование завершилось ошибкой.
Почему возникает?
Сравнение числового столбца с текстом (например, WHERE num_col = 'ABC'), вставка значения с буквами в числовое поле, неподходящий формат для TO_NUMBER или несоответствие десятичного/группового разделителя (запятая или точка).
Как исправить
Найдите выражение с неудачным преобразованием; обычно это условие WHERE или значение INSERT. Обеспечьте совместимость типов при сравнении текста и чисел и при необходимости используйте явное преобразование: TO_NUMBER(my_column) или TO_CHAR для текстовой стороны. Не допускайте ввода нечисловых данных в числовые столбцы на уровне приложения. Обратите внимание на настройку NLS_NUMERIC_CHARACTERS.
Ещё по этой СУБД
- ORA-00018Превышено максимальное число сессий
- ORA-28000Учётная запись заблокирована
- ORA-01578Повреждён блок данных Oracle (file #, block #)
- ORA-02049Тайм-аут: распределённая транзакция ожидает блокировку
- enq: TX - row lock contentionОжидание: сессия заблокирована блокировкой уровня строки, удерживаемой другой транзакцией
- log file syncОжидание: сессия ждёт, пока LGWR сбросит redo на диск при commit
- db file sequential readОжидание: одноблочное физическое чтение, обычно поиск по индексу или таблице