存储过程,存储过程循环,一张表整列插入另一张表

create or replace package body Prc_Stat is


  Procedure Prc_Stat_yuebao(card_type    IN TMP_ZXBB_YB.qc%type,
                              card_guige      IN TMP_ZXBB_YB.qc%type,
                                 p_rc1           OUT pkg_sql.MyRsType) is
  strSql    VARCHAR2(1000);
  tmp_wdid_current VARCHAR2(20);
    fund01    number(16,6);
    fund02    number(16,6);
    fund03    number(16,6);
    fund04    number(16,6);
    fund05    number(16,6);
    fund06    number(16,6);
    fund07    number(16,6);
    fund08    number(16,6);
    fund09    number(16,6);
    fund10    number(16,6);
    fund11    number(16,6);
    fund12    number(16,6);
    fund13    number(16,6);

   Begin
   
        insert into TMP_ZXBB_YB (wdid,pid,wdname)  SELECT ID wdid, PID, FULLNAME wdname  FROM TORG WHERE TYPE = '4' ORDER BY ORGBH;

        
        
     declare    
     cursor cur_Dtl9 is select wdid  from TMP_ZXBB_YB;   
     begin
     OPEN cur_Dtl9;
     loop
     fetch cur_Dtl9 into tmp_wdid_current;
     exit when(cur_Dtl9%notfound);
     --期初库存
          SELECT  SUM(ZPJC + CPJC) into fund01
                FROM T_ZKJC
               WHERE WZGGID in (24, 12, 2)
                 AND TO_CHAR(RQ, 'YYYY/MM/DD') =
                     TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE('2015-08-01',
                                                         'YYYY/MM/DD'),
                                                 -1)),
                             'YYYY/MM/DD')
              and ORGID=tmp_wdid_current;

          
          
       --期末库存
          SELECT SUM(ZPJC + CPJC)  into fund02
                FROM T_ZKJC
               WHERE WZGGID in (24, 12, 2)
                 AND TO_CHAR(RQ, 'YYYY/MM/DD') =
                     TO_CHAR(SYSDATE, 'YYYY/MM/DD')
               and  ORGID= tmp_wdid_current;

         
     
           --其他入库
           
                 SELECT count(RKD.ORGID) into fund03 FROM T_RKMX RKMX , T_RKD RKD where RKD.RKDID = RKMX.RKDID
                          AND RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 7
                       AND RKMX.WZGGID in (24, 12, 2)
                       AND RKD.ORGID=tmp_wdid_current;

                
           
           
           
           ----调拨入库
           
           SELECT COUNT(RKD.ORGID) into fund04
                        FROM T_RKMX RKMX
                        , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 6
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               AND  RKD.ORGID=tmp_wdid_current;

          
           
           
           --盘点入库
            SELECT count(RKD.ORGID) into fund05
                        FROM T_RKMX RKMX
                       , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 20
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               AND  RKD.ORGID=tmp_wdid_current;

              
               
               --次品退回入库
               SELECT count(RKD.ORGID)  into fund06
                        FROM T_RKMX RKMX
                        , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 10
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               AND RKD.ORGID=tmp_wdid_current;

           
                  --次品入库
                   SELECT COUNT(*) into fund07
                FROM V_CPDJD V
               WHERE V.CPDJWZZLID = 2
                 AND V.CPDJWZGGID in (24, 12, 2)
                 AND V.CPDJCSSJ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                 AND V.CPDJCSSJ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                 AND V.IFSHOW = '1'
               AND V.ORGID=tmp_wdid_current;

                
                --次品上交出库
               SELECT count(CKD.ORGID) into  fund08
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE
                           CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 4
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

               
          --盘点出库
         SELECT count(CKD.ORGID)  into fund09
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 20
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

               
               
             --调账出库
             SELECT COUNT(CKD.ORGID) into fund10
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 6
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

               
               
               --销售出库
               SELECT COUNT(CKD.ORGID)  into fund11
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 1
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

               
               
               --赠送出库
               SELECT COUNT(CKD.ORGID)  into fund12
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 2
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

              
         
         
               --其他发出
              SELECT COUNT(CKD.ORGID) into  fund13
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 3
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) AND CKD.ORGID=tmp_wdid_current;

                update  TMP_ZXBB_YB set qc=fund01,qm=fund02,RK_QT=fund03,RK_DB=fund04,RK_PD=fund05,RK_CPTH=fund06,
                RK_CP=fund07,CK_CPSJ=fund08,CK_PD=fund09,CK_TZ=fund10,CK_XS=fund11,CK_ZS=fund12,CK_QTFC=fund13 where wdid=tmp_wdid_current;

                
         
         
         
         
         
          
          
          
     end loop;

     
     close cur_Dtl9;
     end;

     
     
     
     
     
     
         strSql := 'select * from TMP_ZXBB_YB';
         OPEN p_rc1 FOR strSql;
    End;  
    
    
    
    
    
    
    
    
    
    
  Procedure Prc_Stat_yuebaoNew(card_type    IN TMP_ZXBB_YB.qc%type,
                              card_guige      IN TMP_ZXBB_YB.qc%type,
                                 p_rc1           OUT pkg_sql.MyRsType) is
  strSql    VARCHAR2(1000);
  tmp_wdid_current VARCHAR2(20);


   Begin
   
        insert into TMP_ZXBB_YB (wdid,pid,wdname)  SELECT ID wdid, PID, FULLNAME wdname  FROM TORG WHERE TYPE = '4' ORDER BY ORGBH;

        
        
         ----调拨入库
        insert into TMP_ZXBB_YB_PART (wdid,sl)  SELECT  RKD.ORGID wdid ,COUNT(RKD.ORGID) sl
                        FROM T_RKMX RKMX
                        , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 6
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               group by  RKD.ORGID ;

                  
                   update  TMP_ZXBB_YB a set a.RK_DB=(
           
           SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

                 
           --期初库存
           delete from TMP_ZXBB_YB_PART ;

          insert into TMP_ZXBB_YB_PART (wdid,sl) SELECT  ORGID wdid,SUM(ZPJC + CPJC) sl
                FROM T_ZKJC
               WHERE WZGGID in (24, 12, 2)
                 AND TO_CHAR(RQ, 'YYYY/MM/DD') =
                     TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE('2015-08-01',
                                                         'YYYY/MM/DD'),
                                                 -1)),
                             'YYYY/MM/DD')
              group by ORGID ;

              update  TMP_ZXBB_YB a set a.QC=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );   
              
               --期末库存
               delete from TMP_ZXBB_YB_PART ;

          insert into TMP_ZXBB_YB_PART (wdid,sl) SELECT ORGID wdid,SUM(ZPJC + CPJC) sl
                FROM T_ZKJC
               WHERE WZGGID in (24, 12, 2)
                 AND TO_CHAR(RQ, 'YYYY/MM/DD') =
                     TO_CHAR(SYSDATE, 'YYYY/MM/DD')
               group by   ORGID;   
              update  TMP_ZXBB_YB a set a.QM=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );  
               
               --其他入库
            delete from TMP_ZXBB_YB_PART ;


          insert into TMP_ZXBB_YB_PART (wdid,sl)
                 SELECT RKD.ORGID wdid , count(RKD.ORGID) sl  FROM T_RKMX RKMX , T_RKD RKD where RKD.RKDID = RKMX.RKDID
                          AND RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 7
                       AND RKMX.WZGGID in (24, 12, 2)
                       group by RKD.ORGID;

               
          
           update  TMP_ZXBB_YB a set a.RK_QT=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );  
               
                --盘点入库
                delete from TMP_ZXBB_YB_PART ;



          insert into TMP_ZXBB_YB_PART (wdid,sl)
            SELECT RKD.ORGID wdid , count(RKD.ORGID) sl  
                        FROM T_RKMX RKMX
                       , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 20
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               group by  RKD.ORGID;

               
               update  TMP_ZXBB_YB a set a.RK_PD=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );
               --次品退回入库
                delete from TMP_ZXBB_YB_PART ;




          insert into TMP_ZXBB_YB_PART (wdid,sl)
               SELECT RKD.ORGID adid,count(RKD.ORGID) sl
                        FROM T_RKMX RKMX
                        , T_RKD RKD
                          WHERE RKD.RKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND RKD.RKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND RKD.RKXZ = 10
                         AND RKD.RKDID = RKMX.RKDID
                       AND RKMX.WZGGID in (24, 12, 2)
               group by RKD.ORGID;

               
               update  TMP_ZXBB_YB a set a.RK_CPTH=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

                --次品入库
                 delete from TMP_ZXBB_YB_PART ;





          insert into TMP_ZXBB_YB_PART (wdid,sl)
                   SELECT V.ORGID wdid,COUNT(*) sl
                FROM V_CPDJD V
               WHERE V.CPDJWZZLID = 2
                 AND V.CPDJWZGGID in (24, 12, 2)
                 AND V.CPDJCSSJ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                 AND V.CPDJCSSJ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                 AND V.IFSHOW = '1'
               group by  V.ORGID;

               
                update  TMP_ZXBB_YB a set a.RK_CP=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

               
                --次品上交出库
                 delete from TMP_ZXBB_YB_PART ;






          insert into TMP_ZXBB_YB_PART (wdid,sl)
               SELECT CKD.ORGID wdid,count(CKD.ORGID) sl
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE
                           CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 4
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by CKD.ORGID;

               
               update  TMP_ZXBB_YB a set a.CK_CPSJ=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

               --盘点出库
                delete from TMP_ZXBB_YB_PART ;




          insert into TMP_ZXBB_YB_PART (wdid,sl)
         SELECT CKD.ORGID wdid,count(CKD.ORGID) sl  
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 20
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by CKD.ORGID;

               update  TMP_ZXBB_YB a set a.CK_CPSJ=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

               --调账出库
               delete from TMP_ZXBB_YB_PART ;





          insert into TMP_ZXBB_YB_PART (wdid,sl)
             SELECT CKD.ORGID wdid,COUNT(CKD.ORGID) sl
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 6
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by  CKD.ORGID;

                       
                update  TMP_ZXBB_YB a set a.CK_CPSJ=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

             
             
              
               --销售出库
                delete from TMP_ZXBB_YB_PART ;






          insert into TMP_ZXBB_YB_PART (wdid,sl)
               SELECT CKD.ORGID wdid,COUNT(CKD.ORGID) sl
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 1
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by CKD.ORGID;

                       
                        update  TMP_ZXBB_YB a set a.CK_XS=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

               
               
               --赠送出库
               delete from TMP_ZXBB_YB_PART ;







          insert into TMP_ZXBB_YB_PART (wdid,sl)
               SELECT CKD.ORGID wdid,COUNT(CKD.ORGID)  sl
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 2
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by CKD.ORGID;

                       
                       update  TMP_ZXBB_YB a set a.CK_ZS=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

              
         
         
               --其他发出
                delete from TMP_ZXBB_YB_PART ;








          insert into TMP_ZXBB_YB_PART (wdid,sl)
              SELECT CKD.ORGID wdid,COUNT(CKD.ORGID) sl
                        FROM T_CKDMX CKMX
                        , T_CKD CKD
                          WHERE CKD.CKRQ < TO_DATE('2015-09-01', 'YYYY/MM/DD')
                         AND CKD.CKRQ >= TO_DATE('2015-08-01', 'YYYY/MM/DD')
                         AND CKD.CKXZ = 3
                         AND CKD.CKDID = CKMX.CKDID
                       AND CKMX.WZGGID in (24, 12, 2) group by CKD.ORGID;


                 update  TMP_ZXBB_YB a set a.CK_QTFC=(
               SELECT sl from  TMP_ZXBB_YB_PART
               where  TMP_ZXBB_YB_PART.WDID=a.wdid );

             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
                 
                 
     
         strSql := 'select * from TMP_ZXBB_YB order by pid ';
         OPEN p_rc1 FOR strSql;
    End;                    
end Prc_Stat;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值