Oracle,Sql*plus执行语句;DBMS_OUTPUT输出

有以下脚本,利用游标去更新表:

需更新的记录约7万条,在PL/SQL Developer中执行该脚本,卡死。

考虑将更新语句输出,再在PL/SQL Developer直接执行更新语句。于是将脚本稍加改动:

在PL/SQL Developer中执行遇到错误overflow。

overflow原因:在Oracle10gr2版本以前中,利用DBMS_output.putline()来输出是有限制的,包括每行的字符个数(255)及缓存文件的大小(最大可以通过set serveroutput on size 1000000设置到1M),输出缓存超出这个大小会报overflow的Oracle异常。

从10gr2版本开始,使用DBMS_output输出的每行的字符个数可以有32767个,默认缓存大小是无限制的(unlimited)。

服务器上的oracle即是10gr2版本,将输出脚本在10gr2版本的oracle客户端sql*plus中测试,可以正常输出。但在PL/SQL Developer 7.1.5里面的sql window中执行,一直会报overflow的异常。

为了完整的看到这近7万条dbms_outpout.putline()的输出,考虑将内容输出到文件中。将脚本保存为文件a.sql,在Oracle自带的sql*plus中,逐条执行命令

SET SERVEROUTPUT ON;--开启dbms_output控制台输出
SET SQLBLANKLINES ON;--运行sql语句换行
SPOOL c:\a.log;--将控制台输出保存到文件a.log
@ c:\a.sql;--执行a.sql
spool off;
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值