Oracle 用函数返回数据集,用table形式展现

Oracle中返回结果集,keyWords:package,pipelined,for,loop,pipe row()
/*创建包*/
create or replace package performance_audit_time as
type udpr_table is record(
CUSTOMER_ID VARCHAR2(45),
ORACLEID VARCHAR2(45)
);
type udpr_type is table of udpr_table;

function get(etime Date) return udpr_type pipelined;
end performance_audit_time;

/*创建包体*/
create or replace package body performance_audit_time as
function get(etime Date) return udpr_type pipelined is
rc_udpr udpr_table;
begin
for rc_udpr in (select bc.CUSTOMER_ID CUSTOMER_ID,ORACLEID
from BA_CUSTOMER bc left outer join BA_PERSONINCHARGEHISTORY bpich on bc.CUSTOMER_ID = bpich.CUSTOMER_ID
where bc.IS_DELETED = '0' and bpich.IS_DELETED = '0' and bpich.EFFECTIVE_DATE >= trunc(etime,'mm') and bpich.EFFECTIVE_DATE < trunc(add_months

(etime,1),'mm')
)
loop
pipe row(rc_udpr);
end loop;
return;
end;
end performance_audit_time;

/*调用方式*/
select * from table(performance_audit_time.get(to_date('2010-06-27','yyyy-MM-dd')))

你可能感兴趣的:(点滴技术)