Попробуйте выполнить эти два простых оператора в Oracle 10.2:
CREATE TABLE mytest
(table_name varchar2(30),
index_name varchar2(30),
column_expression clob,
column_position number);
INSERT INTO mytest
(table_name,
index_name,
column_expression,
column_position)
SELECT table_name, index_name,
to_lob(column_expression), column_position
FROM user_ind_expressions EXPRA
WHERE NOT EXISTS
(SELECT 1 FROM user_constraints
WHERE constraint_name = EXPRA.index_name
AND table_name = EXPRA.table_name);
Это приводит к этой ошибке:
ОШИБКА в строке 1: ORA-00932: несогласованные типы данных: ожидалось - получилось LONG
Если я опущу ГДЕ НЕ СУЩЕСТВУЕТ следующим образом:
INSERT INTO mytest
(table_name,index_name,column_expression, column_position)
SELECT table_name,index_name,
to_lob(column_expression), column_position
FROM user_ind_expressions EXPRA;
Оно работает:
Создано 23 ряда.
Что происходит?


Если Мишель Кадо говорит это ошибка, то это почти наверняка ошибка.