Welcome 微信登录

首页 / 数据库 / MySQL / DBMS_OUTPUT 过多导致Oracle存储过程执行抛异常

DBMS_OUTPUT 是有缓存区上限的,默认为10000字节,当超过10000后会 抛"buffer overflow, limit of 10000 bytes" 的异常。如下测试存储过程:
  1. create or replace procedure TestMoreDBMSOutPut(  
  2. countnum IN number,  
  3. logerrdes out varchar2  
  4. )  
  5. is  
  6. PrintStr varchar2(1000);  
  7. begin  
  8.          PrintStr := "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";   
  9.            
  10.          for i in 1..countnum loop  
  11.          dbms_output.put_line(PrintStr);  
  12.          end loop;  
  13.          logerrdes := "OK!";    
  14.          commit;  
  15. EXCEPTION  
  16.  WHEN OTHERS THEN  
  17.     rollback;  
  18.     logerrdes := "CDM_CTCALLTRACEINFO_PRC_NEW Fail!"||substr(dbms_utility.format_error_stack,1,200);   
  19.     commit;  
  20.     RETURN;    
  21. end TestMoreDBMSOutPut;  
运行测试


解决方案:1. 关闭输出    DBMS_OUTPUT.DISABLE2. 设置很大缓存区  DBMS_OUTPUT.ENABLE(999999999999999999999)Oracle xml数据构建 XMLType相关函数如何运行和调试Oracle存储过程相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数