我正面临ORA-01000:虽然我在finally块中关闭了结果集,但是超出了最大打开游标数。但我怀疑我的遗留代码存在一些问题,下面是我的伪代码
while (someCondition) {
rs1=executePreparedStatementNew(query1,param1,"");
//do something with rs1
rs1=executePreparedStatementNew(query2,param2,"");
}
感谢任何帮助。
答案 0 :(得分:6)
你还没有说过你的finally块在哪里,但是如果它在while循环之外,那么是的,将具有未闭合的结果集。 rs1
变量将引用所提取的“最新”结果集 - 因此这是唯一将被关闭的结果集。这里没有什么神奇的东西 - 它只是变量的正常行为。
我建议您将每个“获取结果集并将其使用”大小写分离到自己的方法中,并在该方法中的try / finally块中关闭结果集。这将使相当清楚的是发生了什么。