日期:2014-05-16  浏览次数:20602 次

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')))