在数据库中做个程序包,嵌入类型和函数。然后在报表中用类似 select * from table(程序包.函数(参数)) 的形式获取数据。
总共三个部分:1、程序包声明;2、程序包体实现;3、采用table函数取值。
1、创建程序包:
create or replace PACKAGE FUC_RE AS
type r is record(FID varchar2(44 byte),FNAME_L2 nvarchar2(255 char));
type t is table of r;
function ret(n NUMBER) return t pipelined;
END FUC_RE;
2、创建包体:
create or replace PACKAGE BODY FUC_RE AS
function ret(n NUMBER) return t pipelined AS
rr FUC_RE.r;
BEGIN
for i in (select FID ,FNAME_L2 from t_bd_material where rownum<=n) loop
rr.FID:=i.FID;
rr.FNAME_L2:=i.FNAME_L2;
pipe row(rr);
end loop;
RETURN;
END ret;
END FUC_RE;
3、在报表中调用,SQL语句:
select * from table(FUC_RE.ret(50))