Вы не предоставили некоторую информацию, которая может быть полезна, поэтому посмотрите на этот пример, посмотрите, поможет ли он.
Сначала подготовьте все, что нам нужно:
SQL> create or replace type td as object
2 (deptno number,
3 dname varchar2(20),
4 loc varchar2(20));
5 /
Type created.
SQL> create or replace type tty is table of td;
2 /
Type created.
Функция:
SQL> create or replace function myfunction(p_deptno in number)
2 return tty is
3 l_tty tty := tty();
4 begin
5 select td(deptno, dname, loc)
6 bulk collect into l_tty
7 from dept
8 where deptno = p_deptno;
9
10 return l_tty;
11 end;
12 /
Function created.
Проверка:
SQL> select * from table(myfunction(10));
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
Ваш код:
SQL> set serveroutput on
SQL> declare
2 v_result tty;
3 begin
4 v_result := myfunction(10);
5 dbms_output.put_line(v_result(1).dname);
6 end;
7 /
ACCOUNTING
PL/SQL procedure successfully completed.
SQL>