Коллекции

Имеется декларация типа:

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);

Tags: ,

Comments are closed.