ORA-01000: 超出打开游标的最大数 如何处理?

先不考虑在oralce中增大游标数.
我的需求是先查询一张表,while(rs.next())进行处理,根据处理结果,分别先3个表插入或者更新数据(一个事物).使用的是proxool连接池.我先在程序中取得两个连接,一个查询,另一个进行批量更新删除.然后再循环中处理,循环末尾把批量删除preparestatement关掉,结果出现ora01000.后来改用statement的batch()还是出ora01000,忘高手可以教导方法解决这个问题,不甚感激.

[code="java"]发现了一个查询 值关闭了resultset没关闭statement 会不会有问题? [/code]
会,statement 如果在循环里面的操作肯定会有问题的。

很明显,问题出在逆循环内部,你一直再循环里面创建preparestatement 而从未去释放,这样就会创建很多,最后当然是会报ORA-01000: 超出打开游标的最大数,很简单,在循环内部操作完毕后关闭新创建的preparestatement就好了

[quote]
很明显,问题出在逆循环内部,你一直再循环里面创建preparestatement 而从未去释放,这样就会创建很多,最后当然是会报ORA-01000: 超出打开游标的最大数,很简单,在循环内部操作完毕后关闭新创建的preparestatement就好了

可是我在末尾关闭了preparestatement if(update_stm!=null){try{update_stm.close();}catch(Exception e){}}循环底部关闭了,每次循环都关闭了开的新的

[/quote]
代码贴出来吧

奥,出现这种情况只有两种可能,一就是游标数真的很少,可以用SQL查询下。
二、就是重复创建没有及时关闭,例如再循环中创建却没有再循环中关闭,建议检查下代码。

如果是300的话,应该代码有问题,建议你查查代码

恩,resultset也得关闭了。