您的位置:首页 > 编程语言 > Java开发

调用存储过程 返回游标 实例

2018-03-07 13:56 363 查看
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
Connection con = this.getSession().connection();  
CallableStatement sp;  
try {  
     sp = con.prepareCall("{call Fsp_Plan_CheckPrj(?,?,?)}");  
     sp.setString(1, ObjectUtils.toString(params.get("grantNo")));  
     sp.setLong(2, NumberUtils.toLong(ObjectUtils.toString(params.get("offOrgCode"))));  
     sp.registerOutParameter(3, OracleTypes.CURSOR);  
     sp.execute(); // 执行存储过程  
     ResultSet rs = (ResultSet) sp.getObject(3); // 获取返回的对象,再将对象转为记录集  3代表哪个参数  
     while (rs.next()) {  
          Map<String, Object> resultMap = new HashMap<String, Object>();  
          resultMap.put("plan_code", ObjectUtils.toString(rs.getObject(1)));  
          resultMap.put("plan_dept", ObjectUtils.toString(rs.getObject(2)));  
          resultMap.put("plan_amount", IrisStringUtils.FormatMoney(ObjectUtils.toString(rs.getObject(3))));  
          resultMap.put("exec_amount", IrisStringUtils.FormatMoney(ObjectUtils.toString(rs.getObject(4))));  
          resultMap.put("plan_name", ObjectUtils.toString(rs.getObject(5)));  
          resultMap.put("dept_name", ObjectUtils.toString(rs.getObject(6)));  
          list.add(resultMap);  
     }  
} catch (SQLException e) {  
     e.printStackTrace();  
}  
return list;  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息