Oracle pipelined function 用函数返回表

CREATE TYPE datetabletype as object ( dates date);
CREATE TYPE datetable AS TABLE OF datetabletype;

create or replace function REP_GETDATELIST(ConfigID in number)
 return
      datetable pipelined is
      
      Startdate date;
      Enddate Date;
      
      Startdatestr  varchar2(10) ;
      Enddatestr  varchar2(10) ;
      
      YEARs varchar2(4):='2013';
     
begin

  Startdatestr := YEARs || '/01/01';
  Enddatestr := YEARs || '/12/31';
 
  Startdate :=TO_date(Startdatestr,'yyyy-mm-dd');
  Enddate := TO_date(Enddatestr,'yyyy-mm-dd');
 IF ConfigID =1 THEN
     WHILE to_char(Startdate,'mm') < to_char(Enddate,'mm')
       LOOP
         Startdate:=ADD_months(Startdate,1);
         
          PIPE ROW(datetabletype(Startdate));
       END LOOP;
  END IF;  
  return;
end REP_GETDATELIST;


SELECT * FROM table(REP_GETDATELIST(1));

posted on 2013-05-09 09:25  青春的虎子  阅读(127)  评论(0)    收藏  举报

导航