Создадим вьюшку, которая будет использовать функцию с несколькими результатами:
create or replace view vw_get_employee_boss as
select id, fio,
(f).levels_number hierarchy_level,
(f).boss_list boss_list
from (select id, fio, get_employee_boss(fio) f from kk_employee) x;
Посмотрим на результаты:
select * from vw_get_employee_boss;
Добавим к этой задаче подзадачу. Требуется для сотрудника 'мышь Пухлик' запросить список его боссов через ';', упорядоченный по карьерному уровню в другом порядке, начиная от самого большого босса, заканчивая самым мелким боссом.
Возьмем запрос, который назывался “потренируемся на мышках”. С помощью строковой функции reverse продемонстрируем, как развернуть список боссов в другом порядке:
select max(lvl),
max(bosses) keep(dense_rank last order by lvl),
max(reversed_bosses) keep(dense_rank last order by lvl),
max(bosses_backward_path) keep(dense_rank last order by lvl)