use*_*025 0 oracle plsql stored-procedures dynamic-sql
我有一个存储过程,其中 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;
Run Code Online (Sandbox Code Playgroud)
这就引出了另一个问题,是否可以从循环内调用 Execute Immediate 语句。我认为答案是肯定的。
是的你可以。
begin
execute immediate
'begin
execute immediate ''begin dbms_output.put_line(''''Hello''''); end;'';
end;';
end;
Run Code Online (Sandbox Code Playgroud)
我认为这是通往地狱的道路,但是是的,这是可能的。