oracle table函数

PL/SQL表---table()函数用法

/*

PL/SQL表---table()函数用法:

利用table()函数,我们可以将PL/SQL返回的结果集代替table。

oracle内存表在查询和报表的时候用的比较多,它的速度相对物理表要快几十倍。

simpleexample:

1、table()结合数组:

*/

createorreplacetypet_testasobject(

idinteger,

rqdate,

mcvarchar2(60)

);

createorreplacetypet_test_tableastableoft_test;

createorreplacefunctionf_test_array(ninnumberdefaultnull)returnt_test_table

as

v_testt_test_table:=t_test_table();

begin

foriin1..nvl(n,100)loop

v_test.extend();

v_test(v_test.count):=t_test(i,sysdate,'mc'||i);

endloop;

returnv_test;

endf_test_array;

/

select*fromtable(f_test_array(10));

select*fromthe(selectf_test_array(10)fromdual);

/*

2、table()结合PIPELINED函数:

*/

createorreplacefunctionf_test_pipe(ninnumberdefaultnull)returnt_test_tablePIPELINED

as

v_testt_test_table:=t_test_table();

begin

foriin1..nvl(n,100)loop

piperow(t_test(i,sysdate,'mc'||i));

endloop;

return;

endf_test_pipe;

/

select*fromtable(f_test_pipe(20));

select*fromthe(selectf_test_pipe(20)fromdual);

/*

3、table()结合系统包:

*/

createtabletest(idvarchar2(20));

insertintotestvalues('1');

commit;

explainplanforselect*fromtest;

select*fromtable(dbms_xplan.display);

相关推荐