SQL/触发器:延迟后显示的输出

Posted

技术标签:

【中文标题】SQL/触发器:延迟后显示的输出【英文标题】:SQL/Triggers: output shown after a delay 【发布时间】:2012-04-18 09:39:16 【问题描述】:

A similar case 表明有时会触发触发器并且 dbms_output.put_line stmts。其中不会立即打印在控制台上,而是在匿名块/过程中遵循另一个这样的 stmt。

为什么会这样?是因为Oracle客户端的版本吗? 如果按顺序触发两个/三个这样的触发器会怎样? 服务器输出开启

【问题讨论】:

【参考方案1】:

写入 DBMS_OUTPUT 的文本会被缓冲,直到调用 DBMS_OUTPUT.GET_LINES 来检索缓冲数据。无论出于何种原因,您使用的工具都没有调用 DBMS_OUTPUT.GET_LINES 并显示数据。但是,如果您在触发器的输出之前看到后面语句的输出,则表明创建该输出的 DBMS_OUTPUT.PUT_LINE 语句正在按该顺序调用。

关于触发器触发的问题,您需要通读 Oracle 数据库概念手册中关于触发器的部分。对于 11.1,可以在 here 找到数据库概念手册。

分享和享受。

【讨论】:

那么,“缓冲区”是主要原因,嗯?它会一直这样吗?还是我们可以更改设置? 我没有办法改变这种行为。 您可以通过自己调用DBMS_OUTPUT.GET_LINES 来手动从缓冲区读取脚本。

以上是关于SQL/触发器:延迟后显示的输出的主要内容,如果未能解决你的问题,请参考以下文章

Android O 地理围栏触发延迟

定时 UIAlert 每 60 秒触发一次,无论我使用啥延迟

关于sql触发器调试问题

使用 CloudKit 延迟后触发推送通知

(十七)PL/SQL DBMS输出

Access 2013:我可以使用数据宏触发 MS SQL SP 而不延迟 Access 中的执行吗?