Никак не разберусь с вопросом. Структура процедуры:
CREATE OR REPLACE PROCEDURE <Имя_процедуры> (
<переменная_1> IN <тип_переменной_1>,
...
) AS
<внутренняя_переменная_1> <тип_внутренней_переменной_1>;
...
BEGIN
<Тело на языке SQL>;
END;
/
Но что если я хочу подать в переменную какую-то выборку? Например, если у меня есть временная таблица и передать всю таблицу как переменную из которой в теле процедуры можно было бы делать какие-то выборки.
Ответ
Попробуйте так:
create or replace type itemRow as object (id number, name varchar2 (32));
/
create or replace type itemRows is table of itemRow;
/
create or replace function passonItems (resultSet sys_refcursor) return itemRows pipelined is
item itemRow;
begin
<
select *
from table (
passonItems (
cursor (select itemRow(level, 'item '||level) from dual connect by level<4)
)
);
ID NAME
---------- --------------------------------
1 item 1
2 item 2
3 item 3
Функция пока ничего не делает, только пропускает 1:1 данные через себя.
Комментариев нет:
Отправить комментарий