【Oracle】存储过程打印问题—— ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.

写存储过程时遇到一个问题,执行dbms_output.putline(变量名)的时候,报错
ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.

$ oerr ora 20000
20000, 00000, "%s"
// *Cause:  The stored procedure 'raise_application_error'
//          was called which causes this error to be generated.
// *Action: Correct the problem as described in the error message or contact
//          the application administrator or DBA for more information.

应该是变量大小超过了dbms_output.putline的最大值。

解决办法1:
SQL>set   serveroutput   on   size   1000000   

##2014-07-18添加
解决办法2:
在begin后面加上DBMS_OUTPUT.ENABLE(buffer_size => null) ,表示输出buffer不受限制

如下面的语句是为了获取创建索引语句
set serveroutput on
declare
  v_sql    varchar2(1000);
  v_result varchar2(2000);
begin
  for cur_sql in (select 'select dbms_metadata.get_ddl(''INDEX'',''' ||
                         T.INDEX_NAME || ''',''XXXX'') FROM DUAL' as f_sql
                    from v$object_usage t
                   where t.monitoring = 'YES'
                     AND T.USED = 'NO') loop
    begin
      DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
      execute immediate cur_sql.f_sql
        into v_result;
      --DBMS_OUTPUT.PUT_LINE(cur_sql.f_sql);
      DBMS_OUTPUT.PUT_LINE(v_result);
    end;
  end loop;
end;
/


原文链接:http://blog.chinaunix.net/uid-23284114-id-3868872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值