0

我有一个返回 SQL 查询结果的流水线函数:

function my_pipelined_function(...)
    return rec_t
    PIPELINED is
  begin
    for l in (select * from ... join ... where ...) loop
       PIPE ROW(l);
    end loop;
  
    return;
  end;

这可行,但我必须在包头中定义记录及其类型:

 TYPE rec IS RECORD(
   some_date_param date,
   some_number_param number,
   ...
 );

 TYPE rec_t IS TABLE OF rec;

丑陋的。有没有办法避免必须一个一个地声明所有类型定义的“硬编码”记录?

我看到了ANYDATA类型,但我无法让它工作。我应该使用这种方法,如果是,该怎么做?如果不是,我应该使用某种 ref 游标,或者这在 Oracle 中根本不可能?

谢谢

4

0 回答 0