我正在通过 Java 调用 SQL 过程。我在执行代码时在日志中收到 SQL 异常 - java.sql.SQLException:ORA-01000:超出最大打开游标数
我遇到过类似的问题并尝试过这个-
- open_cursors 从 30000 增加到 40000。
- 关闭了try和finally block 中的语句。
但是并没有解决问题。我的代码有问题吗?
这是我的 Java 代码-
public static void buildingHelpContent(String p_id) throws Throwable{
Connection conn = ExtractHP.getConnection();
CallableStatement cs = null;
log.debug("arguments for COMP.Help.build_hp_data p_id= "+p_id);
try {
cs = conn.prepareCall("{call COMP.Help.build_hp_data(?)}");
cs.setString(1, p_id);
cs.execute();
if(cs!=null)
cs.close();
} catch (SQLException e) {
log = ExtractHP.getLogger();
log.debug("!!! Java Exception !!!\n");
log.error("Exception while executing the procedure for ID ...."+ p_id, e);
}
finally{
if(cs!=null)
cs.close();
}
}
最佳答案
您没有关闭连接,可以使用try-with-resources
block (不带finally
):
log.debug("arguments for COMP.Help.build_hp_data p_id= "+p_id);
try (Connection conn = ExtractHP.getConnection();
CallableStatement cs = conn.prepareCall("{call COMP.Help.build_hp_data(?)}")){
在 java 6 中,也在 finally
中关闭连接:
finally{
if(cs!=null)
cs.close();
if(conn!=null)
conn.close();
}
关于java - 超出最大游标数 SQLException-- 配置问题或游标泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56540192/