public List<Map<String, Object>> addPlanRuleProc(Map<String, Object> where) {
StringBuffer sql = new StringBuffer();
sql.append(" {call P_IMPORT_N3(V_BATCH_NO => :V_BATCH_NO,IO_CURSOR => :IO_CURSOR)} ");
List<Map<String, Object>> planList = jdbcTemplate.getJdbcOperations().execute(sql.toString(),
new CallableStatementCallback<List<Map<String, Object>>>() {
@Override
public List<Map<String, Object>> doInCallableStatement(
CallableStatement cs) throws SQLException,
DataAccessException {
List<Map<String, Object>> resultsMap = new ArrayList<>();
cs.setString("V_BATCH_NO", (String) where.get("V_BATCH_NO"));
cs.registerOutParameter("IO_CURSOR", OracleTypes.CURSOR);// OracleTypes有两个包,调用的jdbc包
cs.execute();
ResultSet rs = (ResultSet) cs.getObject("IO_CURSOR");// 获取游标一行的值 注:这个位置的下标要和返回CURSOR的下标位置一致,否则报错
while (rs.next()) {// 转换每行的返回值到Map中
Map<String, Object> rowMap = new HashMap<String, Object>();
rowMap.put("DLR_SIMPLE_NAME", rs.getString("DLR_SIMPLE_NAME"));
rowMap.put("VEHICLE_BRAND_NAME", rs.getString("VEHICLE_BRAND_NAME"));
resultsMap.add(rowMap);
}
rs.close();
return resultsMap;
}
});
return planList;
}
jdbcTemplate调用带输入输出参数的存储过程
最新推荐文章于 2021-05-11 14:50:15 发布