Это одна из тех ситуаций, когда вы получаете бесполезное сообщение об ошибке от Oracle.
Моя ситуация такова: я динамически создаю представление в PL/SQL. Я создаю строку и использую EXECUTE IMMEDIATE для создания представления. Строка настолько длинная, что я использую CLOB для ее хранения.
Когда я запускаю приведенный ниже код в TOAD, я получаю бесполезный
ORA-00907: missing right parenthesis error.
Создание представления вручную в TOAD (без EXECUTE IMMEDIATE) не вызывает проблем. Я чувствую, что длина строки является фактором здесь, поскольку я успешно создал представления с более короткими строками (а также с помощью to_char() вместо dbms_lob.substr(), однако to_char() работает только с меньшими clobs).
Общая длина строки составляет 13775. (Очевидно, я отредактировал строку ниже, где я строю строку.) Это база данных Oracle 10g в Linux.
declare
lv_sql CLOB;
begin
lv_sql := ' CREATE OR REPLACE FORCE VIEW my_view.....';
EXECUTE IMMEDIATE dbms_lob.substr(lv_sql, 14765, 1 );
end;