问题描述
我创建了一个CallableStatement用来将给object表插入数据时,将生成的id返回。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;";CallableStatement objectCallPS = conn.prepareCall(objectSQL);插入的数据是通过另外一个查询做的String qsql = "select "+allkey+" from " + reportTaskVO.getTableName() + " where update_flag=" + StatusUtil.NEW_DATA +" group by "+allkey;// andResultSet rs = st.executeQuery(qsql);当我迭代这个ResultSet的时候,执行一部分后,就会抛出超出最大cursor数的异常。objectCallPS.execute();之前试过修改系统中open_cursors的值,但发现,数据再多点,还是会抛出这个异常。各位高手,知道有什么好的解决方法吗?异常信息如下:java.sql.SQLException: ORA-01000: 超出打开游标的最大数ORA-06512: 在 "SYSADMIN.OBJECT_TRIGGER", line 2ORA-04088: 触发器 'SYSADMIN.OBJECT_TRIGGER' 执行过程中出错ORA-06512: 在 line 1 问题补充:zyn010101 写道
解决方案
10000条数据,分十页,每次1000条,每次往游标中放1000条,分十次循环。当然了,分多少页依赖于数据的总条数,计算这个应该不难吧?
解决方案二:
根据分页思想分批执行呗。