#sql #oracle
Никак не разберусь с вопросом. Структура процедуры: CREATE OR REPLACE PROCEDURE <Имя_процедуры> ( <переменная_1> IN <тип_переменной_1>, ... ) AS <внутренняя_переменная_1> <тип_внутренней_переменной_1>; ... BEGIN <Тело на языке SQL>; END; / Но что если я хочу подать в переменную какую-то выборку? Например, если у меня есть временная таблица и передать всю таблицу как переменную из которой в теле процедуры можно было бы делать какие-то выборки.
Ответы
Ответ 1
Попробуйте так: 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 данные через себя.
Комментариев нет:
Отправить комментарий