Страницы

Поиск по вопросам

понедельник, 26 ноября 2018 г.

Передача выборки в процедуру Oracle?

Никак не разберусь с вопросом. Структура процедуры:
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 <> loop fetch resultSet into item; exit processResultSet when resultSet%notfound; -- здесь требуемая логика pipe row (item); end loop processResultSet; close resultSet; return; end; /
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 данные через себя.

Комментариев нет:

Отправить комментарий