Hier ist ein funktionierendes Beispiel für die Lösung mit verschachtelten Tabellen unter Verwendung der EMP-Tabelle:
create type t_ids is table of integer
/
create or replace function get_office_ids return t_ids
is
l_ids t_ids := t_ids();
l_idx integer := 0;
begin
for r in (select empno from emp where deptno=10)
loop
l_ids.extend;
l_idx := l_idx+1;
l_ids(l_idx) := r.empno;
end loop;
return l_ids;
end;
/
select ename from emp where empno in (select * from table(get_office_ids));
ENAME
----------
CLARK
KING
TEST
MILLER
BINNSY
FARMER