MrZhengYuhui 2016-10-26 01:50 采纳率: 0%
浏览 1263

java调用存储过程返回游标的结果集无法关闭的问题

有如果典型的java的spring jdbc调用了存储过程,返回游标形结果集。如果循环调用此方法。则会造成 ORA-01000: 超出打开游标的最大数。原因是没有及时关闭oracle中的游标,但按理说jdbcTemplate模版已经关闭了链接,但始终无法关闭游标。请问有什么办法可以关闭游标吗?

Object obj=jdbcTemplate.execute(new CallableStatementCreator(){
@Override
public CallableStatement createCallableStatement(Connection con) throws SQLException {
// TODO Auto-generated method stub
String execuSql = "{call batch51(?)}";;
cs.registerOutParameter(1, OracleTypes.CURSOR);// 注册输出参数的类型

return cs;
}
}, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs) throws SQLException,DataAccessException {
List resultsJson = new ArrayList();

                           cs.execute(); 

                           ResultSet refcursor = (ResultSet) cs.getObject(1);// 获取游标一行的值  

                           while (refcursor.next()) {// 转换每行的返回值到Map中   
                               JSONObject json = new JSONObject();
                               json.accumulate("busname",refcursor.getString("busname"));
                               resultsJson.add(json);
                           }   
                           refcursor.close();
                           return resultsJson;
                    }
                });
  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2016-10-27 16:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 CSS实现渐隐虚线边框
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题