Use of Table functions in Oracle -- 1. table and array use example create or replace type t_test as object (id integer, rq date, mc varchar2 (60); create or replace type t_test_table as table of t_test; create or replace function f_test_array (n in number default null) return t_test_table as v_test t_test_table: = t_test_table (); begin for I in 1 .. nvl (n, 100) loop v_test.extend (); v_test (v_test.count): = t_test (I, sysdate, 'mc '| I); end loop; return v_test; end f_test_array; select * from table (f_test_array (10); -- 2. table combined with the PIPELINED function create or replace function f_test_pipe (n in number default null) RETURN t_test_table pipelined as v_test t_test_table: = t_test_table (); begin for I in 1 .. nvl (n, 100) loop pipe row (t_test (I, sysdate, 'mc '| I); end loop; return; end f_test_pipe; select * from table (f_test_pipe (20); select * from the (select f_test_pipe (20) from dual); -- extended, what Table function can be used to implement a simple dynamic view