最近在使用存储过程处理大批量数据,里面用到了游标,在进行测试的时候报错“ORA-20000:ORU-10027:BUFFER OVERFLOW, LIMIT OF 10000 BYTES”。
从网上查询是数据量太多了,用DBMS_OUTPUT.ENABLE(BUFFER=>NULL)可以解除内存使用限制,但是这样数据量过大的话就会有将数据库服务器内存耗尽的风险。
从这点可以看出,带有游标的存储过程(或者说所有的存储过程无论是用到游标的还是没有用到游标的)是将数据全部查出来放到内存里,然后再对数据进行处理?
有什么办法可以实现内存的重复利用,就是查出来一部分数据处理一部分数据,然后再取一部分数据,处理一部分数据,类似于分页处理一样的。
oracle数据库执行存储过程内存使用量问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 大尾巴 2017-09-19 02:58关注
知道问题所在了。不是游标的问题,是因为使用了dbms_output.put_line();是他的内存超了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#vscode#的问题:ESP32开发板对接MQTT实现小灯泡的开关
- ¥15 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
- ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
- ¥20 C,有个译码器,换了信道就跑不出原来数据
- ¥15 MIMIC数据库安装问题
- ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
- ¥20 全书网Java爬取数据
- ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
- ¥100 微信小程序跑脚本授权的问题
- ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏