У меня есть хранимая процедура, в которой я заполняю таблицу из массива записей (сборы), а затем помещаю эти строки в курсор.Записать запись в Ref Cursor
TYPE rctl IS REF CURSOR ;
Fees t_Fees;
type t_Fees is table of t_FeeRecord index by binary_integer;
type t_FeeRecord is record(
description varchar2(80),
amount number(12,2),
taxAmount number(12,2)
);
--populate the Fees array
INSERT into TEMPORARY_FEE(description,amount,tax) values(Fees(i).description,Fees(i).Amount,Fees(i).Tax);
OPEN rc1 FOR SELECT description,amount TEMPORARY_FEES;
Это все работает отлично (заселение запись, вставляя в временную таблицу и заселение реф курсор), но это можно устранить таблицу и просто передать мой массив записей непосредственно в ref_cursor
? Я должен вернуть результаты как ref_cursor
для стороннего приложения.
Я думал, что смогу попробовать что-то вроде этого.
OPEN rc1 FOR
SELECT * FROM TABLE(cast(Fees as t_FeeRecord));
но я получаю недопустимый тип данных.
Не с типом, определенным в пакете, поскольку типы PL/SQL не могут использоваться в SQL (даже если этот сам SQL внутри PL/SQL). Ваш приведение также неверно, 'table()' не работает с типами записей. Если 't_fees' был объявлен с' create type' на уровне SQL, тогда вы могли бы просто «выбрать * из таблицы (сборов)». Это возможно? –