DBMS_OUTPUT如何在内部工作

时间:2014-11-07 01:40:44

标签: oracle plsql dbms-output

最近,我们的一位DBA建议我在我的一个软件包中删除DBMS_OUTPUT.PUT_LINE(),至少有一个编译标志来控制它。最强的参数是缓冲区限制将导致DB中的异常。虽然我完全同意我们不应该在生产中使用这样的调试代码,但是如果 set serveroutput on 没有设置,我认为DBMS_OUTPUT.PUT_LINE()不会引入问题。

所以我的第一个问题是无论serveroutput是否打开,DBMS_OUTPUT.PUT_LINE()是否将行放入缓冲区。如果DBMS_OUTPUT.PUT_LINE()仅在serveroutput打开时将行放入缓冲区,则在正常情况下我们不会打开它。没关系。 Tom's view“坦率地说,我不在乎。”)关于绩效观点似乎支持我的观点。

我的第二个问题是缓冲区的位置(缓冲区所在的位置(数据库服务器或客户端))。我猜它是在服务器端,然后SET SERVEROUTPUT ON或DBMS_OUTPUT.ENABLE()将通过调用DBMS_OUTPUT.GET_LINE()使所有会话可用于从缓冲区读取。

我的最后一个问题是当缓冲区达到限制时会产生什么影响。 我们会在DBMS_OUTPUT.PUT_LINE()的最后一个调用者中收到错误吗?

0 个答案:

没有答案