ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes的解决办法

ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: 在 "SYS.DBMS_OUTPUT", line 32
ORA-06512: 在 "SYS.DBMS_OUTPUT", line 97
ORA-06512: 在 "SYS.DBMS_OUTPUT", line 112
ORA-06512: 在 "RECRM.DELINQUENT", line 131
ORA-06512: 在 line 2

方法1:set serveroutput on size 10000000 //设置大点,默认为2000 bytes

方法2:exec dbms_output.enable(999999999999999999999); //设置大点,默认为2000 bytes

出现这个错误的原因是因为dbms_output缓冲区的溢出。具体如下:
The DBMS_OUTPUT package enables you to send messages from stored procedures, packages, and triggers.

The PUT and PUT_LINE procedures in this package enable you to place information in a buffer that can be read by another trigger, procedure, or package. In a separate PL/SQL procedure or anonymous block, you can display the buffered information by calling the GET_LINE procedure.

这个包提供了这个缓冲区,但是这个缓冲区大小是有限制的,像上面的两个方法那样设置大小,问题就可以解决。

例:

--如果执行了下面这段,会报buffer overflow limit of 2000 bytes:
declare

begin
     for i in 0..1000 loop
         dbms_output.put_line('不设定的话,输入太长会报错ORA-20000: ORU-10027:');
     end loop;

end;
/
-- 不过可以自己来设定,如下:
declare
begin
     dbms_output.enable(99999999999999);
     for i in 0..1000 loop
        dbms_output.put_line('设了dbms_output.enable(99999999999999)就不报错了');
     end loop;
end;
/

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2