事务提交前CURSOR不会关闭?
下面是简化后的代码片段:
transaction begin
for(............){
try{
ps=conn.prepareStatement(....);
rs = stmt.executeQuery();
rs.close();
stmt.close();
stmt = conn.prepareStatement( sql.toString() );
stmt.executeUpdate();
}catch
........
}finally {
stmt.close
conn.close
}
}
transaction commit
问题描述:
commit之前出现了 ORA-01000: maximum open cursors exceeded 异常,
想问是否commit之前所有打开的cursors不会关闭?即使显示调用了close
针对上面这样的程序逻辑有没有办法回避上述问题?
------解决方案--------------------把transaction放入for循环,每次循环算作一个事务
------解决方案--------------------试试batchUpdate
------解决方案--------------------参考一下
http://www.blogjava.net/snoopy/archive/2005/01/27/744.html
尝试在for循环外创建Statement和PreparedStatement
------解决方案--------------------conn.close 放到循环外 ?