Как вернуть строки из хранимой процедуры Oracle с помощью SELECT? - PullRequest
0 голосов
/ 16 марта 2010

У меня есть хранимая процедура, которая возвращает курсор ref следующим образом:

CREATE OR REPLACE PROCEDURE AIRS.GET_LAB_REPORT (ReportCurTyp OUT sys_refcursor)
AS
   v_report_cursor   sys_refcursor;
   report_record     v_lab_report%ROWTYPE;
   l_sql             VARCHAR2 (2000);
BEGIN
   l_sql := 'SELECT * FROM V_LAB_REPORT';

   OPEN v_report_cursor FOR l_sql;

   LOOP
      FETCH v_report_cursor INTO report_record;

      EXIT WHEN v_report_cursor%NOTFOUND;
   END LOOP;

   CLOSE v_report_cursor;
END;

Я хочу использовать вывод этой хранимой процедуры в другом операторе выбора, например:

SELECT * FROM GET_LAB_REPORT ()

но я не могу понять синтаксис.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Всякий раз, когда мне приходилось это делать; Я использовал функции Oracle TYPE и CAST.

Что-то вроде:

SELECT *
FROM TABLE(CAST(F$get_Cassette_Tracking('8029241') AS cass_tracking_tab_type))

Вам необходимо настроить ТИП и все необходимые вам столбцы и использовать их:

pipe ROW(out_obj)

чтобы захватить ваши данные. Есть много способов сделать это, и если я могу найти лучший пример, я сделаю это, но это может дать вам представление.

0 голосов
/ 16 марта 2010

См. Этот SO для рабочего примера: Параметры Oracle с оператором IN?

...