我有一个返回 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 中根本不可能?
谢谢