检索函数的内容

时间:2016-06-10 11:00:05

标签: oracle plsql

我在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。

1 个答案:

答案 0 :(得分:4)

您可以使用a table collection expression

  

table_collection_expression 允许您通知Oracle, collection_expression 的值应被视为用于查询和DML操作的表。 collection_expression 可以是子查询,列,函数或集合构造函数。无论其形式如何,它都必须返回一个集合值 - 即类型为嵌套表或varray的值。提取集合元素的过程称为集合取消。

因此,在您的情况下,当您的函数返回嵌套表类型时,您可以执行以下操作:

select * from table(exportFile_TC);

对象类型中的每个字段都将显示为结果集中的一列。