1、使用场合:
任何返回集合 (仅嵌套表和数组,索引表不支持)的函数都可以使用TABLE()操作符通过标准的SQL来查询。这样的函数被称为表函数。2、使用示例:
a、nested table
create or replace type t_tab is table of NUMBER; -不允许index table(数组和嵌套表都可以直接创建类型)
CREATE OR REPLACE FUNCTION f_tab RETURN t_tab IS
v_tab t_tab := t_tab();
BEGIN
FOR i IN 1 .. 3 LOOP
v_tab.EXTEND;
v_tab(i) := i;
END LOOP;
RETURN v_tab;
END;
SELECT * FROM TABLE(f_tab);
column_value
1
2
3
b、varray
create or replace type t_tab is VARRAY(10) of NUMBER ;
CREATE OR REPLACE FUNCTION f_tab RETURN t_tab IS
v_tab t_tab := t_tab();
BEGIN
FOR i IN 1 .. 3 LOOP
v_tab.EXTEND;
v_tab(i) := i;
END LOOP;
RETURN v_tab;
END;
SELECT * FROM TABLE(f_tab);
column_value
1
2
3
注意:表函数的集合类型不包含索引表,包头中定义的嵌套表、数组可以作为字段类型。索引表只能作为plsql的类型在内存中操作。