Страницы

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

четверг, 9 января 2020 г.

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

#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 данные через себя.

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

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