DBMS_OUTPUT 过多导致oracle存储过程执行抛异常
2011-07-28 19:36
477 查看
DBMS_OUTPUT 是有缓存区上限的,默认为10000字节,当超过10000后会 抛"buffer overflow, limit of 10000 bytes" 的异常。如下测试存储过程:
运行测试
解决方案:1. 关闭输出 DBMS_OUTPUT.DISABLE2. 设置很大缓存区 DBMS_OUTPUT.ENABLE(999999999999999999999)
create or replace procedure TestMoreDBMSOutPut( countnum IN number, logerrdes out varchar2 ) is PrintStr varchar2(1000); begin PrintStr := '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'; for i in 1..countnum loop dbms_output.put_line(PrintStr); end loop; logerrdes := 'OK!'; commit; EXCEPTION WHEN OTHERS THEN rollback; logerrdes := 'CDM_CTCALLTRACEINFO_PRC_NEW Fail!'||substr(dbms_utility.format_error_stack,1,200); commit; RETURN; end TestMoreDBMSOutPut;
运行测试
解决方案:1. 关闭输出 DBMS_OUTPUT.DISABLE2. 设置很大缓存区 DBMS_OUTPUT.ENABLE(999999999999999999999)
相关文章推荐
- oracle 使用 dbms_lock.sleep暂停存储过程执行
- oracle中Job定期执行存储过程刷新物化视图并记录异常(我的物化视图不能自己刷)
- ORACLE在存储过程中调用dbms_包的权限问题
- 解决问题:Oracle存储过程执行成功,但数据没有变化
- oracle 存储过程循环执行update语句
- oracle 执行执行动态存储过程名---其实就是存储过程名是个字符串参数
- oracle存储过程执行时间的统计
- Oracle中执行存储过程call和exec区别
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
- Oracle创建存储过程、执行存储过程基本语法
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- Oracle采用存储过程执行sql语句,将查询到的数据导出到EXCEL中
- C#+Oracle开发中执行存储过程问题
- Oracle中执行存储过程call和exec区别
- Oracle 11g保证存储过程同时只能被一个线程执行
- 在存储过程中执行3种oracle循环语句
- Oracle存储过程执行权限 .
- oracle job 定时执行 存储过程
- oracle execute immediate 动态执行SQL存储过程
- Dapper完美兼容Oracle,执行存储过程,并返回结果集。