执行IMMEDIATE'一些命令'

Nik*_*ita 3 sql oracle plsql execute-immediate

是否可以在一个EXECUTE IMMEDIATE块中执行一些sql命令?

这种语法有什么问题:

declare
    pragma autonomous_transaction;
begin           
    execute immediate
    'begin
        COMMENT ON TABLE t1 IS ''description1'';
        COMMENT ON TABLE t2 IS ''description2'';            
    end;';
end;
Run Code Online (Sandbox Code Playgroud)

对于一个SQL命令,它工作正常:

declare
    pragma autonomous_transaction;
begin           
    execute immediate ' COMMENT ON TABLE t1 IS ''description1'' ';
end;
Run Code Online (Sandbox Code Playgroud)

Sha*_*nce 6

begin end字符串中执行立即将被视为一个PL/SQL匿名块.DDL,例如COMMENTPL/SQL中不允许的.如果是这样你就不需要使用execute immediate.Oracle基本上可以同时使用PL/SQL语句块或单个SQL语句.虽然也有批处理SQL语句的API.

因此,要COMMENT在PL/SQL块或过程中运行,您需要使用execute immediate语句.

如果没有更多的上下文,我无法智能地评论这是否是正确的方法,或者只是将两个评论声明放在一起会更好.