【发布时间】:2020-08-05 17:50:54
【问题描述】:
正如标题中所说,我想知道是否可以将多个引用游标(在 Oracle 存储过程中)分配给一个: 像下面的代码: ....
create or replace procedure assign_ref_cursor(result_cur out sys_refcursor)
as
cursor1 sys_refcursor;
cursor2 sys_refcursor;
cursor3 sys_refcursor;
-- expected result:
result_cur[0] = cursor1
result_cur[1] = cursor2
result_cur[2] = cursor3
...
return result_cur;
... 好吧,最好是把每个 ref_cursor 的全部结果合二为一。
原因是我正在使用 Spring data JPA 从存储过程中检索数据(多个引用游标)。但显然没有使用 javax.persistence.storedprocedurequery 检索多个引用光标的解决方案......尽管谷歌搜索了几天......
所以我想出了将 Oracle 存储过程更改为仅返回一个 ref_cursor 的解决方案,即“聚合”不同的 ref_cursor。
根据 Alex 的问题,这里是 UPDATE
我尝试使用以下方法调用三个 OUT 引用光标参数:
StoredProcedureQuery proc = entityManager.createStoredProcedureQuery("myStoredProc");
proc.registerStoredProcedureParameter("cursor1", void.class, ParameterMode.REF_CURSOR);
proc.registerStoredProcedureParameter("cursor2", void.class, ParameterMode.REF_CURSOR);
...
List<Object[]> listOfObjects = proc.getResultList();
但是listOfObjects只包含cursor1的内容 无法获取cursor2的内容...
【问题讨论】:
-
三个光标从何而来 - 您是在该过程中打开它们吗?
-
为什么不能调用带有三个 OUT ref 游标参数的过程? That seems to be supported;还是强/JPA 限制?
-
感谢 Alex 的回复:我做了更新以回复您的问题。
标签: oracle spring-data-jpa ref-cursor