首页 > 解决方案 > Execute Immediate 语句可以嵌套在另一个 Execute Immediate 中吗

问题描述

我有一个存储过程,其中 Execute Immediate 将调用一个“Begin ... End”块,其中包含另一个 Execute Immediate,只有在满足特定条件时才会调用该块。

"Begin... End clock" 中的内部 Execute Immediate 命令用单引号括起来。所以看起来像

BEGIN
...SOME STUFF HERE...

FOR ..... LOOP
EXECUTE IMMEDIATE
           'BEGIN
              IF (condition) THEN
                     EXECUTE IMMEDIATE 'DML STRING'
              END IF
            END;'

END LOOP;

END;

这就引出了另一个问题,是否可以从循环中调用 Execute Immediate 语句。我认为答案是肯定的。

标签: oraclestored-proceduresplsqldynamic-sql

解决方案


是的你可以。

begin
    execute immediate
        'begin
             execute immediate ''begin dbms_output.put_line(''''Hello''''); end;'';
         end;';
end;

我认为这是通往地狱的道路,但是是的,这是可能的。


推荐阅读