String sql = "{?=call funcName(?,?,?)}";
return jdbcTemplate.execute(sql,new CallableStatementCallback<List<Map<String,Object>>>(){
public List<Map<String,Object>> doInCallableStatement(CallableStatement cs){
List<Map<String,Object>> resultsList = new ArrayList<Map<String,Object>>();
try{
cs.registerOutParameter(1,OracleTypes.CURSOR);
cs.setString(2,a);
cs.setString(3,b);
cs.setString(4,c);
cs.execute();
ResultSet rs = (ResultSet)cs.getObject(1);//此处序号与输出参数位置一致
while(rs.next()){
ResultSetMetaData md = rs.getMetaData();
Map<String,Object> obj = new LinkedHashMap<String,Object>();
for(int i=1;i<=md.getColumnCount();i++){// 此处从1开始
String value = rs.getString(md.getColumnName(i));
obj.put(md.getColumnName(i),value==null?"":value);
}
resultsList.add(obj);
}
}catch(Exception e){
e.printStackTrace();
}
return resultsList;
}
});
JdbcTemplate 调用 oracle Function 返回游标
最新推荐文章于 2022-08-13 14:12:41 发布