Oracle PL/SQL - 即时输出/控制台打印的提示

Fru*_*ner 20 oracle debugging plsql console-output unbuffered-output

我有许多pl/sql程序,可能需要几分钟才能运行.在开发它们时,我添加了一些打印语句来帮助调试,并提供一些反馈和进度指标.最初,我在小型测试装置上运行这些,输出几乎是瞬间完成的.既然我正在测试需要花费几分钟才能运行的更大的测试集,我发现打印到控制台不再合适,因为在程序结束之前不会打印任何内容.我习惯于在不缓冲输出并立即打印的环境中工作,并且添加简单的打印语句以进行简单的调试和诊断很常见.

是否可以在pl/sql中立即打印输出(不缓冲)?如果没有,人们建议采用哪些替代方案来获得类似的结果?

Ton*_*ews 18

您可以使用自动事务将过程写入表的过程,例如:

procedure log (p_message)
is
    pragma autonomous_transaction;
begin
    insert into message_log (user, datetime, message)
    values (user, sysdate, p_message);
    commit;
end;
Run Code Online (Sandbox Code Playgroud)

然后从另一个Oracle会话监视该表.


Hen*_*Gao 9

我们有一个小技巧.

你可以使用DBMS_APPLICATION_INFO.set_client_info("这里的一些信息"); 创建一些变量并替换""中的字符串.

并使用v $ session中的select client_info来监控进度.