我在oracle中创建了一个函数,它返回一条记录,如下所示:
create or replace function exportFile_TC return COMPENSE_TC_TABLE AS
retval COMPENSE_TC_TABLE := COMPENSE_TC_TABLE();
begin
retval.extend;
retval(retval.count) := COMPENSE_TC('A', 0, '788', '000000002582055', '0778153', '10209077105333978893', '08025011091000160486', 'TRANS TRAVEL', 'HTL EDEN', 1, null, null, '00000000000000000155', null, '00000000', '20150209', '08', null, null, null);
return(retval);
end exportFile_TC;
现在当我查询时:
select exportFile_TC from dual;
我得到的是:
EXPORTFILE_TC
-------------
<Object>
我需要的是如何能够检索我的函数的返回值的内容。 ? 这是我第一次使用oracle函数,所以可能是我错过了sthing。
答案 0 :(得分:4)
您可以使用a table collection expression:
table_collection_expression 允许您通知Oracle, collection_expression 的值应被视为用于查询和DML操作的表。 collection_expression 可以是子查询,列,函数或集合构造函数。无论其形式如何,它都必须返回一个集合值 - 即类型为嵌套表或varray的值。提取集合元素的过程称为集合取消。
因此,在您的情况下,当您的函数返回嵌套表类型时,您可以执行以下操作:
select * from table(exportFile_TC);
对象类型中的每个字段都将显示为结果集中的一列。