Вы можете использовать эти опции для чтения и отображения вывода из курсора, который возвращается из вашей функции.
Использование простого выбора
select emp_dept(10) from dual;
Результат
EMP_DEPT(10)
--------------------
CURSOR STATEMENT : 1
CURSOR STATEMENT : 1
LAST_NAME
-------------------------
Whalen
Использование DBMS_SQL.RETURN_RESULT
(Oracle 12c и выше)
DECLARE
l_cur SYS_REFCURSOR := emp_dept(10) ;
BEGIN
DBMS_SQL.RETURN_RESULt(l_cur);
END;
/
Результат
PL/SQL procedure successfully completed.
ResultSet #1
LAST_NAME
-------------------------
Whalen
FETCH
из курсора в локальную коллекцию.Небольшое отклонение может также использоваться для извлечения в скалярную переменную.
DECLARE
l_cur SYS_REFCURSOR := emp_dept(10) ;
TYPE l_last_name_tab IS TABLE OF employees.last_name%TYPE;
l_lnt l_last_name_tab;
BEGIN
FETCH l_cur BULK COLLECT INTO l_lnt;
for i in 1..l_lnt.count
loop
dbms_output.put_line(l_lnt(i));
end loop;
END;
/
Результат
Whalen
PL/SQL procedure successfully completed.