临时表的两种用法

先创建 行对象,再创建 行对象集合

create or replace type pmmgdover_record_aa as object (
            vdate         VARCHAR2(20),
       partnum       VARCHAR2(20),
       revision      VARCHAR2(20),
       gongling      VARCHAR2(30),
  lotnum        VARCHAR2(20),
  xialiaomianji VARCHAR2(20),
  isscls002     VARCHAR2(20),
  defectcode    VARCHAR2(20),
  defname       VARCHAR2(50),
  tichuproc     VARCHAR2(20),
  linename     NVARCHAR2(30),
  line        VARCHAR2(20),
  scraparea     NVARCHAR2(20),
  workno        VARCHAR2(30),
  pcname        VARCHAR2(30),
  zeprocline    VARCHAR2(20),
  zeprocode      VARCHAR2(20)
    );
    
    --drop type pmmgdover_record_aa_array;
    
create or replace type pmmgdover_record_aa_array as table of pmmgdover_record_aa; 



创建 function  




--create or replace function f_pmmgdover_record_aa_array(curdate varchar2 default null) return pmmgdover_record_aa_array as  
       aa_array pmmgdover_record_aa_array := pmmgdover_record_aa_array();
       v_number number;
       v_curdate varchar2(20); -- 結案日期
       v_curdate2 varchar2(20); -- 結案日期
       v_curdate3 varchar2(20); -- 結案日期
       --id1 number;
       --time1 date;
       --data1 varchar2(60);
     BEGIN
       
    -- Dbms_Output.enable(buffer_size=>null);
       
      if curdate is null then
        v_curdate:= to_char(sysdate-1,'yyyyMMdd');
        else
          v_curdate:=curdate;
        end if;
        
      --  dbms_output.put_line(v_curdate);
      v_curdate2:=to_char(to_date(v_curdate,'yyyyMMdd')-90,'yyyyMMdd');
     -- dbms_output.put_line(v_curdate2);
      v_curdate3:=to_char(to_date(v_curdate,'yyyyMMdd')-180,'yyyyMMdd');
        
      v_number:=0;

 
    
    
     for aa_rowdata in (
select 
        b.VDATE,
       partnum,
       revision,
       b.WORKNO gongling,
       lotnum,
     --  outputarea,
       c.lyarea xialiaomianji,
       info.ISSCLS002,
       defectcode,
       defname,
      tichuproc,
       linename,
       line,
       scraparea,
       info.LOTINFO032 workno,
       pcname,
       a.procline zeprocline,
       a.proccode zeprocode
  from  ---
                )
    loop
      v_number:=v_number+1;
       aa_array.extend;
       
       aa_array(v_number):=pmmgdover_record_aa('20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021','20201021');

       aa_array(v_number).vdate:=aa_rowdata.vdate;
       aa_array(v_number).partnum:=aa_rowdata.partnum;
       aa_array(v_number).revision:=aa_rowdata.revision;
       aa_array(v_number).gongling:=aa_rowdata.gongling;
       aa_array(v_number).lotnum:=aa_rowdata.lotnum;
       aa_array(v_number).xialiaomianji:=aa_rowdata.xialiaomianji;
       aa_array(v_number).isscls002:=aa_rowdata.isscls002;
       aa_array(v_number).defectcode:=aa_rowdata.defectcode;
       aa_array(v_number).defname:=aa_rowdata.defname;
       aa_array(v_number).tichuproc:=aa_rowdata.tichuproc;
       aa_array(v_number).linename:=aa_rowdata.linename;
       aa_array(v_number).line:=aa_rowdata.line;
       aa_array(v_number).scraparea:=aa_rowdata.scraparea;
       aa_array(v_number).workno:=aa_rowdata.workno;
       aa_array(v_number).pcname:=aa_rowdata.pcname;
       aa_array(v_number).zeprocline:=aa_rowdata.zeprocline;
       aa_array(v_number).zeprocode:=aa_rowdata.zeprocode;
       
       
       
       
    end loop;
    return aa_array;
     
     END;



使用的时候
  /*

?用行集合?型和其他表?合
 SELECT *
 FROM table(f_test_array()) T1
  ,table(f_test_array()) T2
  ,T_TEST_PIP T3
 WHERE T1.ID = T2.ID
 AND   T1.ID = T3.ID ;*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值