这是您从 Oracle 收到无用错误消息的情况之一。
我的情况如下:我在 PL/SQL 中动态创建一个视图。我构建了一个字符串并使用 EXECUTE IMMEDIATE 来创建视图。字符串太长了,我用 CLOB 来存储它。
当我在 TOAD 中运行下面的代码时,我得到了无用的
ORA-00907: missing right parenthesis error.
在 TOAD 中手动创建视图(没有 EXECUTE IMMEDIATE)没有问题。我的感觉是字符串的长度是这里的一个因素,因为我已经成功地创建了具有较短字符串的视图(并且还使用 to_char() 而不是 dbms_lob.substr(),但是 to_char() 仅适用于较小的 clob)。
总字符串长度为 13775。(显然,我已经编辑了下面我构建字符串的行。)这是 Linux 上的 Oracle 10g 数据库。
declare
lv_sql CLOB;
begin
lv_sql := ' CREATE OR REPLACE FORCE VIEW my_view.....';
EXECUTE IMMEDIATE dbms_lob.substr(lv_sql, 14765, 1 );
end;