在 PL/SQL 中捕获 SQL/开发人员脚本输出

Posted

技术标签:

【中文标题】在 PL/SQL 中捕获 SQL/开发人员脚本输出【英文标题】:Capture SQL/Developer Script Output in PL/SQL 【发布时间】:2021-04-30 16:43:01 【问题描述】:

在 SQL/Developer 中,当我执行一条语句时,我会收到一条脚本输出消息,其内容类似于 7 Records Merged

这是我的相关 PL/SQL 代码:

v_sql_loader := 'merge into foobar b using foobiz i on (b.foobar_id = i.foobiz_id) when not matched then insert (foobar_id) values (foobiz_id)';

execute immediate v_sql_loader;

如何在 PL/SQL 中捕获7 records Merged

我正在写 dbms_output.put_line(SQLERRM) 但那只会返回 ORA-0000: normal, successful completion

我可以使用什么 Oracle/PLSQL 对象来复制 SQL/开发者脚本输出消息?

期望结果:PLSQL 语句,最好是dbms_output.put_line();表示7 Records Merged.

【问题讨论】:

【参考方案1】:

使用SQL%ROWCOUNT:

BEGIN
   ...
   EXECUTE IMMEDIATE v_sql_loader;
   DBMS_OUTPUT.PUT_LINE('Merged: ' || SQL%ROWCOUNT);
END;
/

【讨论】:

以上是关于在 PL/SQL 中捕获 SQL/开发人员脚本输出的主要内容,如果未能解决你的问题,请参考以下文章

从 shell 脚本调用 PL/SQL 存储过程并捕获 out 参数

如何在 powershell 变量中捕获 PL SQL 函数的输出?

有没有办法在 Oracle 中刷新 PL/SQL 的输出?

有没有办法在 Oracle 中刷新 PL/SQL 的输出?

如何在匿名 PL/SQL 块中自动显示所有 SQL 语句的输出

使用从 shell 脚本返回多个输出的 API 调用 PL/SQL