Имеется декларация типа:
CREATE OR REPLACE TYPE TNUM as table of number;
Необходимо написать реализацию функции, возвращающая в качестве результата заполненный массив, имеющий тип TNUM с значениями от 1…1000
Вариант №1
create or replace function function_tnum return TNUM as l_tnum tnum; begin select rownum r bulk collect into l_tnum from dual connect by rownum <= 1000; return l_tnum; end function_tnum; /
Вариант №2
create or replace function function_tnum return TNUM as l_tnum tnum; begin l_tnum := tnum(); <<t>> for i in (select rownum r from dual connect by rownum <= 1000) loop l_tnum.extend; l_tnum(l_tnum.count) := i.r; end loop t; return l_tnum; end function_tnum; /
Вывод результата:
select * from table(function_tnum);