Обычно функция возвращает одну «вещь».Обычно это скаляр (число, varchar2, запись и т. Д.), Хотя вы можете вернуть коллекцию.Так, например, вы можете вернуть коллекцию (в данном случае вложенную таблицу) со всеми значениями EMPNO из таблицы EMP
CREATE TYPE empno_tbl
IS TABLE OF NUMBER;
CREATE OR REPLACE FUNCTION get_empnos
RETURN empno_tbl
IS
l_empnos empno_tbl;
BEGIN
SELECT empno
BULK COLLECT INTO l_empnos
FROM emp;
RETURN l_empnos;
END;
Но это не очень распространенная вещь в функции,Было бы немного более распространено, чтобы функция возвращала курсор, а не возвращал значения, и позволяла вызывающей стороне обрабатывать выборку данных, то есть
CREATE OR REPLACE FUNCTION get_empnos2
RETURN SYS_REFCURSOR
IS
l_rc SYS_REFCURSOR;
BEGIN
OPEN l_rc
FOR SELECT empno
FROM emp;
RETURN l_rc;
END;
Но даже это не особенно распространено в Oracle.В зависимости от того, что вы пытаетесь выполнить, обычно было бы проще создать представление, которое выбрало интересующие вас данные, и запросить это представление, а не вызывать функцию или процедуру.