从 Oracle 存储过程中检索数组列表 - Java
Posted
技术标签:
【中文标题】从 Oracle 存储过程中检索数组列表 - Java【英文标题】:Retrieve array list from Oracle stored procedure - Java 【发布时间】:2017-03-05 12:54:57 【问题描述】:我正在尝试从 Oracle SQL 中的存储过程中检索对象列表。你知道如何从下面的代码中获取一个 Arraylist 吗?
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);
在地图对象中,我有键值对列表。 检查下面的图片:
【问题讨论】:
【参考方案1】:我不确定这是最好的解决方案,但它对我有用。我会尝试找到更好的东西。如果您有任何其他建议,请随时提出!
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());
【讨论】:
以上是关于从 Oracle 存储过程中检索数组列表 - Java的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 OracleManagedDataAccess 从 oracle 存储过程中检索出参数