2013-04-24 56 views
0

嗨,下列语句会引发一些错误。它在一个存储过程中。它合法吗?PL/SQL立即执行语法

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; 

但第一件事第一件

回答

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

或者(更少麻烦与嵌入引号):

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