CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
/
CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY
AS
l_data EmpArray := EmpArray();
CURSOR c_emp IS SELECT ename FROM EMP;
BEGIN
FOR emp_rec IN c_emp LOOP
l_data.extend;
l_data( l_data.count ) := emp_rec.ename;
END LOOP;
RETURN l_data;
END;
/
create or replace function Lookups_Fn return lookups_tab
pipelined
is
v_row lookup_row;
begin
for j in 1..10
loop
v_row :=
case j
when 1 then lookup_row ( 1, 'one' )
--...
when 7 then lookup_row ( 7, 'seven' )
else lookup_row ( j, 'other' )
end;
pipe row ( v_row );
end loop;
return;
end Lookups_Fn;
/
select * from table ( Lookups_Fn );
2条答案
按热度按时间nkhmeac61#
**UPDATE:**参见TABLE解决方案的第一条注解,没有大小限制。
返回VARRAY或使用PIPELINED函数查询。
字符串
型
bgtovc5b2#
如果适合应用程序开发人员的话,您总是可以从函数返回XML。
在Oracle中可以通过多种方式生成XML,具体取决于您安装的是什么以及您使用的是什么版本。
XMLTYPE在某些上下文中非常有用,可以使用XMLElement、XMLAttribute、XMLAgg等从SQL生成。内置功能。如果客户机不支持XMLTYPE,则可以很容易地将其转换为CLOB值。
也许最简单的,但不是最好的(IMO)选择是使用dbms_xmlgen包:
字符串
输出量:
型
这将为您提供一个单一的CLOB值的“表”结果。