从 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 存储过程中检索出参数

从本地存储中一一检索数组列表

如何从 SQL Server 中的存储过程中检索参数列表

从存储过程中检索出参数?

在 Oracle JDBC 中是不是可以批量存储过程调用和检索 OUT 参数?

oracle如何列出特定存储过程中使用的所有表