Как сказано в заголовке, я хотел бы знать, можно ли назначить несколько курсоров ref (в Oracle Stored Procedure) одному: Как следующий код: ....
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 JPA. Но, по-видимому, нет решения для получения нескольких курсоров ref с помощью javax.persistence.storedprocedurequery ... несмотря на дни поиска в Google ...
Итак, я придумал решение изменить хранимую процедуру Oracle, чтобы она возвращала только один ref_cursor, который объединяет разные ref_cursor.
После вопроса Алекса, вот ОБНОВЛЕНИЕ
Я попытался вызвать три параметра курсора OUT ref, используя:
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 ...