2017-03-05 47 views
1

我想从Oracle SQL中的存储过程检索对象列表。你可以知道我怎么能从下面的代码中获得一个Arraylist?从Oracle存储过程检索数组列表 - Java

ArrayList<String> strings = new ArrayList<>(); 
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName("P_ROUTES"); 
SqlParameterSource in = new MapSqlParameterSource() 
    .addValue("V_FIXED_INT", period) 
    .addValue("V_CARRIER", carrier) 
    .addValue("V_DATE_RANGE_START", dateRangeStart) 
    .addValue("V_DATE_RANGE_END", dateRangeEnd); 
Map<String, Object> out = jdbcCall.execute(in); 
ArrayList obj = (ArrayList) out.get("RET_CURSOR"); 
Map<String, Object> map = (Map<String, Object>) obj.get(0); 

在地图对象中,我列出了键值对。下面 检查图像: enter image description here

回答

0

我不知道这是最好的解决方案,但它为我工作。我会尽力找到更好的东西。如果您有任何其他建议,请放心!

Map<String, Object> out = jdbcCall.execute(in); 
ArrayList obj = (ArrayList) out.get("RET_CURSOR"); 
logger.info("Length of retrieved routes from database = " + obj.size()); 
for (Object o : obj) { 
    Map<String, Object> map = (Map<String, Object>) o; 
    for (Map.Entry<String, Object> entry : map.entrySet()) 
     routes.add(entry.getValue().toString()); 
}