网上找到的一个例子。。。
SQL> create or replace type t_test as object(
2 id integer,
3 rq date,
4 mc varchar2(60)
5 );
6 /
Type created
SQL> create or replace type t_test_table as table of t_test;
2 /
Type created
SQL>
SQL> create or replace function f_test_array(n in number default null)
2 return t_test_table
3 as
4 v_test t_test_table := t_test_table();
5 begin
6 for i in 1 .. nvl(n, 100) loop
7 v_test.extend();
8 v_test(v_test.count) := t_test(i, sysdate, 'mc' || i);
9 end loop;
10 return v_test;
11 end f_test_array;
12 /
Function created
SQL> select * from table(f_test_array(10));
ID RQ MC
--------------------------------------- ----------- ------------------------------------------------------------
1 2011-6-9 15 mc1
2 2011-6-9 15 mc2
3 2011-6-9 15 mc3
4 2011-6-9 15 mc4
5 2011-6-9 15 mc5
6 2011-6-9 15 mc6
7 2011-6-9 15 mc7
8 2011-6-9 15 mc8
9 2011-6-9 15 mc9
10 2011-6-9 15 mc10
10 rows selected