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

问题描述

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

解决方案

发现了一个查询 值关闭了resultset没关闭statement 会不会有问题? 会,statement 如果在循环里面的操作肯定会有问题的。
解决方案二:
恩,resultset也得关闭了。
解决方案三:
如果是300的话,应该代码有问题,建议你查查代码
解决方案四:
奥,出现这种情况只有两种可能,一就是游标数真的很少,可以用SQL查询下。二、就是重复创建没有及时关闭,例如再循环中创建却没有再循环中关闭,建议检查下代码。
解决方案五:
引用 很明显,问题出在逆循环内部,你一直再循环里面创建preparestatement 而从未去释放,这样就会创建很多,最后当然是会报ORA-01000: 超出打开游标的最大数,很简单,在循环内部操作完毕后关闭新创建的preparestatement就好了可是我在末尾关闭了preparestatement if(update_stm!=null){try{update_stm.close();}catch(Exception e){}}循环底部关闭了,每次循环都关闭了开的新的 代码贴出来吧
解决方案六:
很明显,问题出在逆循环内部,你一直再循环里面创建preparestatement 而从未去释放,这样就会创建很多,最后当然是会报ORA-01000: 超出打开游标的最大数,很简单,在循环内部操作完毕后关闭新创建的preparestatement就好了

时间: 2024-11-01 16:50:06

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

ora-01000 超出打开游标的最大数

问题描述 这是一个老问题,网上也有很多关于这个问题的原因和解决方法,一般都是说在循环里面使用PrepareStatement或ResultSet后没有及时关闭引起的. 我现在的问题是,我使用的是Sptring的Jdbctemplate来执行查询操作(我也看了Jdbctemplate的代码,甚至将源代码复制出来自己再添加输出信息,确定PerpareStatement确实是有关闭,奇怪的是似乎执行关闭的次数要少于实际执行查询的次数),所以我不能自己调用方法关闭PrepareStatement或Res

Oracle出现超出打开游标最大数的解决方法_oracle

本文实例讲述了Oracle出现超出打开游标最大数的解决方法.分享给大家供大家参考,具体如下: Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor.尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现这个问题.因为游标一直在不停的打开,而且没有关闭. 一般来说,我们在写Java代码的时候,createStatement

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

问题描述 我创建了一个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,?,?,?,?,?,?,?,?,?,?,

oracle中ora-0100错误打开游标过大的解决

最近做项目碰到ORA-01000错误,参考了一些解决办法,把自己解决问题的一些心得写下来.java访问oracle数据库,在for循环代码中,如果忽略关闭createstatment或preparedstatement建立的连接,将出现:ORA-01000错误.背景知识:oracle中每次使用用createstatment或preparedstatement语句,都将打开一个游标,所以单纯增 加oracle中打开游标数目不是解决问题的办法. 问题解决:1:首先定位是那些语句打开的游标过大.执行以

MS SQL基础教程:打开游标

打开游标游标在声明以后,如果要从游标中读取数据必须打开游标.打开一个Transact-SQL服务器游标使用OPEN 命令,其语法规则为: OPEN { { [GLOBAL] cursor_name } | cursor_variable_name} 各参数说明如下: •GLOBAL 定义游标为一全局游标. •cursor_name 为声明的游标名字.如果一个全局游标和一个局部游标都使用同一个游标名,则如果使用GLOBAL 便表明其为全局游标,否则表明其为局部游标. •cursor_variabl

mssql 打开游标 关闭游标 删除游标

  declare @mergedate datetime declare @masterid int declare @duplicateid int select @mergedate = getdate() declare merge_cursor cursor fast_forward for select mastercustomerid, duplicatecustomerid from duplicatecustomers where ismerged = 0 --定义一个游标对象

Oracle 错误总结及问题解决 ORA

参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数 ()ORA-00021: 会话附属于其它某些进程:无法转换会话ORA-00022: 无效的会话 ID:访问被拒绝ORA-00023: 会话引用进程私用内存:无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册

ORACLE错误一览表 方便查询_oracle

ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-000

Oracle错误代码大全

Oracle错误代码大全--最新.最全的Oracle错误代码 对快速查找oracle数据库错误原因很有帮助 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 OR