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 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)