ORA-01722: invalid number при вставке в поле VARCHAR2
Есть пустая таблица с 2мя полями
IDRQ VARCHAR2(32 CHAR)
PROCID VARCHAR2(64 CHAR)
Пытаюсь вставить запись
INSERT INTO mySomeTable (IDRQ, PROCID)
VALUES('1', '3b721725-bdb6-4716-8b92-59a8cde+');
Получаю ошибку:
ORA-01722: invalid number
Oracle 19
Что не так с данными?
Ответы (1 шт):
Ошибка вызвана некорректным индексом по полю PROCID.
Индекс построился для типа данных Date с конвертацией varchar2 в тип number.
Индекс по полю построился вот такой:
TRUNC(TO_NUMBER(PROCID))
При выполнении команды
create index idx_PROCID on mySomeTable(trunc(PROCID));
Что для меня очень удивительно. Да есть ошибка в скрипте создания индекса, однако мне очень не понятно, почему Oracle вместо ошибки создания индекса, переделал тип данных? :(
3 часа мучений, 200к ошибок вставки записей, а все из-за этого...
Вопрос на тему: Почему при создании индекса по функции trunc() на поле с типом varchar2, Oracle меняет функцию на trunc(to_number()), а не выдает ошибку