[size=large]最近因要删除大量数据,于是写了个程序来小批量删除
所以会用到了循环
当循环执行了一段时间后就会抛出异常----ORA-01000: maximum open cursors exceeded
于是到网上查了一下,原来是跟ps =con.prepareStatement(sqlBuffer.toString());有关
异常表示已经达到了一个进程打开的最大游标数
起因:con.cteateStatement()或con.prepareStatement()放在循环体内,而又没有在循环体内关闭statement or preparedStatement。上面语句在执行时相当于在数据库打开一个curesor,游标一直打开而没有关闭。
解决办法:把createStatement() and prepareStatement()放在循环体外,或者在循环体内及时关闭它们。
oracle查看最大游标连接数:show parameter open_cursors;[/size]
所以会用到了循环
当循环执行了一段时间后就会抛出异常----ORA-01000: maximum open cursors exceeded
于是到网上查了一下,原来是跟ps =con.prepareStatement(sqlBuffer.toString());有关
异常表示已经达到了一个进程打开的最大游标数
起因:con.cteateStatement()或con.prepareStatement()放在循环体内,而又没有在循环体内关闭statement or preparedStatement。上面语句在执行时相当于在数据库打开一个curesor,游标一直打开而没有关闭。
解决办法:把createStatement() and prepareStatement()放在循环体外,或者在循环体内及时关闭它们。
oracle查看最大游标连接数:show parameter open_cursors;[/size]
本文详细阐述了在使用Oracle数据库时,循环内创建Statement或PreparedStatement可能导致的最大游标数超出问题,提供了将这些操作移出循环体或及时关闭它们的解决方案,并通过示例展示了如何设置和查看最大游标连接数。
2539

被折叠的 条评论
为什么被折叠?



