PL / SQL执行立即语法

时间:2013-04-24 19:44:10

标签: oracle plsql

您好以下语句会引发一些错误。它在一个存储过程中。这是合法的吗?

V_LONG_STR := 'Text1';
EXECUTE IMMEDIATE 'V_LONG_STR := NULL';

我得到的错误是ORA-00900:无效的SQL语句

我正努力工作

 V_LONG_STR := 'REPLACE (''TEST1'',''TEST'', ''TEXT'')';
 EXECUTE IMMEDIATE V_LONG_STR;

和edventually

 V_LONG_STR := 'REPLACE (''V_LONG_STR := ''TEST1'',''TEST'', ''TEXT'')';
 EXECUTE IMMEDIATE V_LONG_STR;

但首先要做的事情

2 个答案:

答案 0 :(得分:3)

V_LONG_STR := '
  declare
    a varchar2(100);
  begin
    a := REPLACE (''TEST1'',''TEST'', ''TEXT'');
  end;
';
EXECUTE IMMEDIATE V_LONG_STR;

答案 1 :(得分:2)

或者(对嵌入式引号不那么麻烦):

V_LONG_STR := q'[
  declare
    a varchar2(100);
  begin
    a := REPLACE ('TEST1','TEST','TEXT');
  end;
]';
EXECUTE IMMEDIATE V_LONG_STR;