軒轅劍 2012-05-14 18:06
浏览 514
已采纳

oracle数据库cursor问题,超出打开最大cursor数

我创建了一个CallableStatement用来将给object表插入数据时,将生成的id返回。
[code="java"]String objectSQL = "begin insert into object(id,name,meta_type,status,create_date,create_user_id,last_update_date,province,city,street,community,grid,operator_id) values (null,?,?,?,?,?,?,?,?,?,?,?,?) returning id into ?;end;";[/code]
[code="java"]CallableStatement objectCallPS = conn.prepareCall(objectSQL);[/code]

插入的数据是通过另外一个查询做的
[code="java"]String qsql = "select "+allkey+" from " + reportTaskVO.getTableName() + " where update_flag=" + StatusUtil.NEW_DATA +" group by "+allkey;// and[/code]
[code="java"] ResultSet rs = st.executeQuery(qsql);[/code]

当我迭代这个ResultSet的时候,执行一部分后,就会抛出超出最大cursor数的异常。
[code="java"]objectCallPS.execute();[/code]

之前试过修改系统中open_cursors的值,但发现,数据再多点,还是会抛出这个异常。

各位高手,知道有什么好的解决方法吗?

异常信息如下:
[code="java"]java.sql.SQLException: ORA-01000: 超出打开游标的最大数
ORA-06512: 在 "SYSADMIN.OBJECT_TRIGGER", line 2
ORA-04088: 触发器 'SYSADMIN.OBJECT_TRIGGER' 执行过程中出错
ORA-06512: 在 line 1[/code]

  • 写回答

2条回答 默认 最新

  • zyn010101 2012-05-16 09:29
    关注

    10000条数据,分十页,每次1000条,每次往游标中放1000条,分十次循环。当然了,分多少页依赖于数据的总条数,计算这个应该不难吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?