一个简单的Oracle package Produce

procedure  UPDATE_SAME_PROVICE(P_DATE  DATE) IS
PROVICE_NAME varchar2(100) default '江苏';
O_TYPE_357  varchar2(100) default 'PV-PR357';
O_TYPE_42  varchar2(100) default 'PV-PR42';
SALE_QTY_50          NUMBER default 0;
SALE_AMT_50         NUMBER default 0;
SALE_WEIGHT_50    NUMBER default 0;
SALE_PRICE_50       NUMBER default 0;
BUD_SALE_QTY_50  NUMBER default 0;
BUD_ACH_RATE_50  NUMBER default 0;
LM_SALE_QTY_50    NUMBER default 0;
LM_SALE_WGH_50   NUMBER default 0;
LM_SALE_AMT_50    NUMBER default 0;
LM_SALE_PRICE_50  NUMBER default 0;
LM_ACH_RATE_50    NUMBER default 0;
LY_SALE_QTY_50     NUMBER default 0;
LY_SALE_WGH_50    NUMBER default 0;
LY_SALE_AMT_50     NUMBER default 0;
LY_SALE_PRICE_50   NUMBER default 0;
LY_ACH_RATE_50    NUMBER default 0;


SALE_QTY_51          NUMBER default 0;
SALE_AMT_51         NUMBER default 0;
SALE_WEIGHT_51    NUMBER default 0;
SALE_PRICE_51       NUMBER default 0;
BUD_SALE_QTY_51  NUMBER default 0;
BUD_ACH_RATE_51  NUMBER default 0;
LM_SALE_QTY_51    NUMBER default 0;
LM_SALE_WGH_51   NUMBER  default 0;
LM_SALE_AMT_51    NUMBER default 0;
LM_SALE_PRICE_51  NUMBER default 0;
LM_ACH_RATE_51    NUMBER default 0;
LY_SALE_QTY_51     NUMBER default 0;
LY_SALE_WGH_51    NUMBER default 0;
LY_SALE_AMT_51     NUMBER default 0;
LY_SALE_PRICE_51   NUMBER default 0;
LY_ACH_RATE_51    NUMBER  default 0;


SALE_QTY_52          NUMBER default 0;
SALE_AMT_52         NUMBER default 0;
SALE_WEIGHT_52    NUMBER default 0;
SALE_PRICE_52       NUMBER default 0;
BUD_SALE_QTY_52  NUMBER default 0;
BUD_ACH_RATE_52  NUMBER default 0;
LM_SALE_QTY_52    NUMBER default 0;
LM_SALE_WGH_52   NUMBER  default 0;
LM_SALE_AMT_52    NUMBER default 0;
LM_SALE_PRICE_52  NUMBER default 0;
LM_ACH_RATE_52    NUMBER default 0;
LY_SALE_QTY_52     NUMBER default 0;
LY_SALE_WGH_52    NUMBER default 0;
LY_SALE_AMT_52     NUMBER default 0;
LY_SALE_PRICE_52   NUMBER default 0;
LY_ACH_RATE_52    NUMBER default 0;


SALE_QTY_ZZ          NUMBER default 0;
SALE_AMT_ZZ         NUMBER default 0;
SALE_WEIGHT_ZZ    NUMBER  default  0;
SALE_PRICE_ZZ        NUMBER default 0; 
BUD_SALE_QTY_ZZ  NUMBER   default  0;
BUD_ACH_RATE_ZZ  NUMBER default 0;
LM_SALE_QTY_ZZ    NUMBER  default  0;
LM_SALE_WGH_ZZ   NUMBER default 0;
LM_SALE_AMT_ZZ    NUMBER default  0;
LM_SALE_PRICE_ZZ  NUMBER default 0;
LM_ACH_RATE_ZZ    NUMBER default 0;
LY_SALE_QTY_ZZ     NUMBER default  0;
LY_SALE_WGH_ZZ    NUMBER default  0;
LY_SALE_AMT_ZZ     NUMBER default  0;
LY_SALE_PRICE_ZZ   NUMBER default 0;
LY_ACH_RATE_ZZ    NUMBER default 0;


O_CODE_50 varchar2(100) default '50';
O_CODE_51 varchar2(100) default '51';
O_CODE_52 varchar2(100) default '52';
O_CODE_ZZ varchar2(100) default 'ZZ';
begin
---------50----------
select  
nvl(sum(SALE_QTY),0) , nvl(sum(SALE_AMT),0) ,
nvl(sum(SALE_WEIGHT),0) ,nvl(sum(LM_SALE_QTY),0) ,
nvl(sum(LM_SALE_AMT),0) ,nvl(sum( LM_SALE_WGH),0) ,
nvl(sum(LY_SALE_QTY),0) ,nvl(sum(LY_SALE_AMT),0) ,
nvl(sum(LY_SALE_WGH),0) ,
NVL(SUM(BUD_SALE_QTY),0)
into  SALE_QTY_50,SALE_AMT_50,SALE_WEIGHT_50,LM_SALE_QTY_50,
LM_SALE_AMT_50,LM_SALE_WGH_50,LY_SALE_QTY_50,LY_SALE_AMT_50,
LY_SALE_WGH_50,BUD_SALE_QTY_50
from WEIXIN_PIG_DRAFT 
where   O_TYPE_NAME =PROVICE_NAME
And  DT= P_DATE
AND O_CODE=O_CODE_50
And O_Type in(O_TYPE_357,O_TYPE_42);
dbms_output.put_line(SALE_QTY_50); --输出并换行 
---------------------51----------------------------------
select  
nvl(sum(SALE_QTY),0) , nvl(sum(SALE_AMT),0) ,
nvl(sum(SALE_WEIGHT),0) ,nvl(sum(LM_SALE_QTY),0) ,
nvl(sum(LM_SALE_AMT),0) ,nvl(sum( LM_SALE_WGH),0) ,
nvl(sum(LY_SALE_QTY),0) ,nvl(sum(LY_SALE_AMT),0) ,
nvl(sum(LY_SALE_WGH),0),
NVL(SUM(BUD_SALE_QTY),0) 
into  SALE_QTY_51,SALE_AMT_51,SALE_WEIGHT_51,LM_SALE_QTY_51,
LM_SALE_AMT_51,LM_SALE_WGH_51,LY_SALE_QTY_51,LY_SALE_AMT_51,
LY_SALE_WGH_51,BUD_SALE_QTY_51
from WEIXIN_PIG_DRAFT 
where   O_TYPE_NAME =PROVICE_NAME
And  DT= P_DATE
AND O_CODE=O_CODE_51
And O_Type in(O_TYPE_357,O_TYPE_42);
dbms_output.put_line(SALE_QTY_51); --输出并换行 


---------------------52----------------------------------
select  
nvl(sum(SALE_QTY),0) , nvl(sum(SALE_AMT),0) ,
nvl(sum(SALE_WEIGHT),0) ,nvl(sum(LM_SALE_QTY),0) ,
nvl(sum(LM_SALE_AMT),0) ,nvl(sum( LM_SALE_WGH),0) ,
nvl(sum(LY_SALE_QTY),0) ,nvl(sum(LY_SALE_AMT),0) ,
nvl(sum(LY_SALE_WGH),0) ,
NVL(SUM(BUD_SALE_QTY),0)
into  SALE_QTY_52,SALE_AMT_52,SALE_WEIGHT_52,LM_SALE_QTY_52,
LM_SALE_AMT_52,LM_SALE_WGH_52,LY_SALE_QTY_52,LY_SALE_AMT_52,
LY_SALE_WGH_52,BUD_SALE_QTY_52
from WEIXIN_PIG_DRAFT 
where   O_TYPE_NAME =PROVICE_NAME
And  DT= P_DATE
AND O_CODE=O_CODE_52
And O_Type in(O_TYPE_357,O_TYPE_42);
dbms_output.put_line(SALE_QTY_52); --输出并换行 
-----------------------------------------------------------------------
----------------计算大区-省-------------------------------------------------------
SALE_QTY_ZZ  :=SALE_QTY_50 + SALE_QTY_51 +SALE_QTY_52;
SALE_AMT_ZZ:= SALE_AMT_50+SALE_AMT_51+SALE_AMT_52;
SALE_WEIGHT_ZZ:=SALE_WEIGHT_50+SALE_WEIGHT_51+SALE_WEIGHT_52;


LM_SALE_QTY_ZZ := LM_SALE_QTY_50 + LM_SALE_QTY_51 +LM_SALE_QTY_52;
LM_SALE_AMT_ZZ := LM_SALE_AMT_50 + LM_SALE_AMT_51 +LM_SALE_AMT_52;
LM_SALE_WGH_ZZ:= LM_SALE_WGH_50+LM_SALE_WGH_51+LM_SALE_WGH_52;


LY_SALE_QTY_ZZ:=LY_SALE_QTY_50 + LY_SALE_QTY_51 +LY_SALE_QTY_52;
LY_SALE_AMT_ZZ :=  LY_SALE_AMT_50 + LY_SALE_AMT_51 +LY_SALE_AMT_52;
LY_SALE_WGH_ZZ:= LY_SALE_WGH_50+LY_SALE_WGH_51+LY_SALE_WGH_52;
BUD_SALE_QTY_ZZ:= BUD_SALE_QTY_50+BUD_SALE_QTY_51+BUD_SALE_QTY_52;
---SALE_PRICE_ZZ:= round(decode(round(SALE_WEIGHT_ZZ,0) ,0, 0, SALE_AMT_ZZ) /decode(round(SALE_WEIGHT_ZZ,0) ,0, 1, SALE_WEIGHT_ZZ) ,2) ;
---------------------------------更新大区省------------------------------------------------------
UPDATE  WEIXIN_PIG_DRAFT SET   SALE_QTY=SALE_QTY_ZZ , 
           SALE_AMT=SALE_AMT_ZZ,
           SALE_WEIGHT=SALE_WEIGHT_ZZ, 
           sale_price=round( decode(SALE_WEIGHT_ZZ ,0,0,SALE_AMT_ZZ)  / decode(SALE_WEIGHT_ZZ,0,1,SALE_WEIGHT_ZZ) ,2) ,
           BUD_SALE_QTY=BUD_SALE_QTY_ZZ,
           BUD_ACH_RATE=round( decode(BUD_SALE_QTY_ZZ,0,0,SALE_QTY_ZZ) / decode(BUD_SALE_QTY_ZZ,0,1,BUD_SALE_QTY_ZZ) *100  ,2)  ,  
           LM_SALE_QTY=LM_SALE_QTY_ZZ, 
           LM_SALE_AMT=LM_SALE_AMT_ZZ,
           LM_SALE_WGH=LM_SALE_WGH_ZZ,
           --  round(DECODE(SUM(nvl(LM_SALE_QTY,0)),0,0,(SUM(nvl(LM_SALE_QTY,0)*nvl(LM_SALE_PRICE,0)))/SUM(nvl(LM_SALE_QTY,0))),2)    LM_SALE_PRICE,
          LM_SALE_PRICE= round(decode(LM_SALE_WGH_ZZ ,0,0,LM_SALE_AMT_ZZ)  / decode(LM_SALE_WGH_ZZ,0,1,LM_SALE_WGH_ZZ) ,2) ,   
          LM_ACH_RATE=  ROUND(DECODE(LM_SALE_QTY_ZZ ,0,0,(SALE_QTY_ZZ - LM_SALE_QTY_ZZ)) /DECODE(LM_SALE_QTY_ZZ,0,1,LM_SALE_QTY_ZZ)*100 ,2)  , 
            LY_SALE_QTY=LY_SALE_QTY_ZZ,
            LY_SALE_AMT=LY_SALE_AMT_ZZ,
            LY_SALE_WGH=LY_SALE_WGH_ZZ,
          
         LY_SALE_PRICE= round(decode(LY_SALE_WGH_ZZ ,0,0,LY_SALE_AMT_ZZ)  / decode(LY_SALE_WGH_ZZ,0,1,LY_SALE_WGH_ZZ) ,2) ,   
          LY_ACH_RATE=  ROUND(DECODE(LY_SALE_QTY_ZZ ,0,0,(SALE_QTY_ZZ - LY_SALE_QTY_ZZ)) /DECODE(LY_SALE_QTY_ZZ,0,1,LY_SALE_QTY_ZZ)*100 ,2) 
          WHERE DT=P_DATE AND O_CODE=O_TYPE_357 AND  O_NAME = PROVICE_NAME ;
          delete  from WEIXIN_PIG_DRAFT     WHERE DT=P_DATE AND O_CODE=O_TYPE_42 AND  O_NAME = PROVICE_NAME ;       
 -------------------------------------------更新江苏省---------------------------------------------------------------------------------------------------------------------------   
 ------------------1 更新种猪-----------
 UPDATE  WEIXIN_PIG_DRAFT SET   SALE_QTY=SALE_QTY_50 , 
           SALE_AMT=SALE_AMT_50,
           SALE_WEIGHT=SALE_WEIGHT_50, 
           sale_price=round(decode(SALE_WEIGHT_50 ,0,0,SALE_AMT_50)  / decode(SALE_WEIGHT_50,0,1,SALE_WEIGHT_50) ,2) ,
           BUD_SALE_QTY=BUD_SALE_QTY_50,
           BUD_ACH_RATE=ROUND(DECODE(BUD_SALE_QTY_50,0,0,SALE_QTY_50)/ DECODE(BUD_SALE_QTY_50,0,1,BUD_SALE_QTY_50)*100 ,2)  ,  
           LM_SALE_QTY=LM_SALE_QTY_50, 
           LM_SALE_AMT=LM_SALE_AMT_50,
           LM_SALE_WGH=LM_SALE_WGH_50,
           --  round(DECODE(SUM(nvl(LM_SALE_QTY,0)),0,0,(SUM(nvl(LM_SALE_QTY,0)*nvl(LM_SALE_PRICE,0)))/SUM(nvl(LM_SALE_QTY,0))),2)    LM_SALE_PRICE,
          LM_SALE_PRICE= round(decode(LM_SALE_WGH_50 ,0,0,LM_SALE_AMT_50)  / decode(LM_SALE_WGH_50,0,1,LM_SALE_WGH_50) ,2) ,   
          LM_ACH_RATE=  ROUND(DECODE(LM_SALE_QTY_50 ,0,0,(SALE_QTY_50 - LM_SALE_QTY_50)) /DECODE(LM_SALE_QTY_50,0,1,LM_SALE_QTY_50)*100 ,2)  , 
            LY_SALE_QTY=LY_SALE_QTY_50,
            LY_SALE_AMT=LY_SALE_AMT_50,
            LY_SALE_WGH=LY_SALE_WGH_50,
          
         LY_SALE_PRICE= round(decode(LY_SALE_WGH_50 ,0,0,LY_SALE_AMT_50)  / decode(LY_SALE_WGH_50,0,1,LY_SALE_WGH_50) ,2) ,   
          LY_ACH_RATE=  ROUND(DECODE(LY_SALE_QTY_50 ,0,0,(SALE_QTY_50 - LY_SALE_QTY_50)) /DECODE(LY_SALE_QTY_50,0,1,LY_SALE_QTY_50)*100 ,2) 
          WHERE    O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_50
                        And O_Type in (O_TYPE_357);
          delete  from WEIXIN_PIG_DRAFT  where O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_50
                        And O_Type in (O_TYPE_42);
 -------------------------------------------
 ------------------2 更新肥猪-----------
 UPDATE  WEIXIN_PIG_DRAFT SET   SALE_QTY=SALE_QTY_51 , 
           SALE_AMT=SALE_AMT_51,
           SALE_WEIGHT=SALE_WEIGHT_51, 
           sale_price=round(decode(SALE_WEIGHT_51 ,0,0,SALE_AMT_51)  / decode(SALE_WEIGHT_51,0,1,SALE_WEIGHT_51) ,2) ,
           BUD_SALE_QTY=BUD_SALE_QTY_51,
           BUD_ACH_RATE=ROUND(DECODE(BUD_SALE_QTY_51,0,0,SALE_QTY_51)/ DECODE(BUD_SALE_QTY_51,0,1,BUD_SALE_QTY_51)*100 ,2)  ,  
           LM_SALE_QTY=LM_SALE_QTY_51, 
           LM_SALE_AMT=LM_SALE_AMT_51,
           LM_SALE_WGH=LM_SALE_WGH_51,
           --  round(DECODE(SUM(nvl(LM_SALE_QTY,0)),0,0,(SUM(nvl(LM_SALE_QTY,0)*nvl(LM_SALE_PRICE,0)))/SUM(nvl(LM_SALE_QTY,0))),2)    LM_SALE_PRICE,
          LM_SALE_PRICE= round(decode(LM_SALE_WGH_51 ,0,0,LM_SALE_AMT_51)  / decode(LM_SALE_WGH_51,0,1,LM_SALE_WGH_51) ,2) ,   
          LM_ACH_RATE=  ROUND(DECODE(LM_SALE_QTY_51 ,0,0,(SALE_QTY_51 - LM_SALE_QTY_51)) /DECODE(LM_SALE_QTY_51,0,1,LM_SALE_QTY_51)*100 ,2)  , 
            LY_SALE_QTY=LY_SALE_QTY_51,
            LY_SALE_AMT=LY_SALE_AMT_51,
            LY_SALE_WGH=LY_SALE_WGH_51,
          
         LY_SALE_PRICE= round(decode(LY_SALE_WGH_51 ,0,0,LY_SALE_AMT_51)  / decode(LY_SALE_WGH_51,0,1,LY_SALE_WGH_51) ,2) ,   
          LY_ACH_RATE=  ROUND(DECODE(LY_SALE_QTY_51 ,0,0,(SALE_QTY_51 - LY_SALE_QTY_51)) /DECODE(LY_SALE_QTY_51,0,1,LY_SALE_QTY_51)*100 ,2) 
        WHERE    O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_51
                        And O_Type in (O_TYPE_357);
        delete  from WEIXIN_PIG_DRAFT  where O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_51
                        And O_Type in (O_TYPE_42);      
 -------------------------------------------
 ------------------3 更新仔猪-----------
 UPDATE  WEIXIN_PIG_DRAFT SET   SALE_QTY=SALE_QTY_52 , 
           SALE_AMT=SALE_AMT_52,
           SALE_WEIGHT=SALE_WEIGHT_52, 
           sale_price=round(decode(SALE_WEIGHT_52 ,0,0,SALE_AMT_52)  / decode(SALE_WEIGHT_52,0,1,SALE_WEIGHT_52) ,2) ,
           BUD_SALE_QTY=BUD_SALE_QTY_52,
           BUD_ACH_RATE=ROUND(DECODE(BUD_SALE_QTY_52,0,0,SALE_QTY_52)/ DECODE(BUD_SALE_QTY_52,0,1,BUD_SALE_QTY_52)*100 ,2)  ,  
           LM_SALE_QTY=LM_SALE_QTY_52, 
           LM_SALE_AMT=LM_SALE_AMT_52,
           LM_SALE_WGH=LM_SALE_WGH_52,
           --  round(DECODE(SUM(nvl(LM_SALE_QTY,0)),0,0,(SUM(nvl(LM_SALE_QTY,0)*nvl(LM_SALE_PRICE,0)))/SUM(nvl(LM_SALE_QTY,0))),2)    LM_SALE_PRICE,
          LM_SALE_PRICE= round(decode(LM_SALE_WGH_52 ,0,0,LM_SALE_AMT_52)  / decode(LM_SALE_WGH_52,0,1,LM_SALE_WGH_52) ,2) ,   
          LM_ACH_RATE=  ROUND(DECODE(LM_SALE_QTY_52 ,0,0,(SALE_QTY_52 - LM_SALE_QTY_52)) /DECODE(LM_SALE_QTY_52,0,1,LM_SALE_QTY_52)*100 ,2)  , 
            LY_SALE_QTY=LY_SALE_QTY_52,
            LY_SALE_AMT=LY_SALE_AMT_52,
            LY_SALE_WGH=LY_SALE_WGH_52,
          
         LY_SALE_PRICE= round(decode(LY_SALE_WGH_52 ,0,0,LY_SALE_AMT_52)  / decode(LY_SALE_WGH_52,0,1,LY_SALE_WGH_52) ,2) ,   
          LY_ACH_RATE=  ROUND(DECODE(LY_SALE_QTY_52 ,0,0,(SALE_QTY_52 - LY_SALE_QTY_52)) /DECODE(LY_SALE_QTY_52,0,1,LY_SALE_QTY_52)*100 ,2) 
          WHERE    O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_52
                        And O_Type in (O_TYPE_357);
        delete  from WEIXIN_PIG_DRAFT  where O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE=O_CODE_52
                        And O_Type in (O_TYPE_42);   
 -------------------------------------------
 ------------------4.更新合计-------------------
  UPDATE  WEIXIN_PIG_DRAFT SET   SALE_QTY=SALE_QTY_ZZ , 
           SALE_AMT=SALE_AMT_ZZ,
           SALE_WEIGHT=SALE_WEIGHT_ZZ, 
           sale_price=round(decode(SALE_WEIGHT_ZZ ,0,0,SALE_AMT_ZZ ) / decode(SALE_WEIGHT_ZZ,0,1,SALE_WEIGHT_ZZ) ,2) ,
           BUD_SALE_QTY=BUD_SALE_QTY_ZZ,
           BUD_ACH_RATE=ROUND(DECODE(BUD_SALE_QTY_ZZ,0,0,SALE_QTY_ZZ)/ DECODE(BUD_SALE_QTY_ZZ,0,1,BUD_SALE_QTY_ZZ)*100,2)  ,  
           LM_SALE_QTY=LM_SALE_QTY_ZZ, 
           LM_SALE_AMT=LM_SALE_AMT_ZZ,
           LM_SALE_WGH=LM_SALE_WGH_ZZ,
           --  round(DECODE(SUM(nvl(LM_SALE_QTY,0)),0,0,(SUM(nvl(LM_SALE_QTY,0)*nvl(LM_SALE_PRICE,0)))/SUM(nvl(LM_SALE_QTY,0))),2)    LM_SALE_PRICE,
          LM_SALE_PRICE= round(decode(LM_SALE_WGH_ZZ ,0,0,LM_SALE_AMT_ZZ)  / decode(LM_SALE_WGH_ZZ,0,1,LM_SALE_WGH_ZZ) ,2) ,   
          LM_ACH_RATE=  ROUND(DECODE(LM_SALE_QTY_ZZ ,0,0,(SALE_QTY_ZZ - LM_SALE_QTY_ZZ)) /DECODE(LM_SALE_QTY_ZZ,0,1,LM_SALE_QTY_ZZ)*100 ,2)  , 
            LY_SALE_QTY=LY_SALE_QTY_ZZ,
            LY_SALE_AMT=LY_SALE_AMT_ZZ,
            LY_SALE_WGH=LY_SALE_WGH_ZZ,
          
         LY_SALE_PRICE= round(decode(LY_SALE_WGH_ZZ ,0,0,LY_SALE_AMT_ZZ)  / decode(LY_SALE_WGH_ZZ,0,1,LY_SALE_WGH_ZZ) ,2) ,   
          LY_ACH_RATE=  ROUND(DECODE(LY_SALE_QTY_ZZ ,0,0,(SALE_QTY_ZZ - LY_SALE_QTY_ZZ)) /DECODE(LY_SALE_QTY_ZZ,0,1,LY_SALE_QTY_ZZ)*100 ,2) 
          WHERE    O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE='ZZZ'
                        And O_Type in (O_TYPE_357);
        delete  from WEIXIN_PIG_DRAFT  where O_TYPE_NAME =PROVICE_NAME
                        And  DT= P_DATE
                        AND O_CODE='ZZZ'
                        And O_Type in (O_TYPE_42);   
 ---------------------------------------------------
 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------       
end UPDATE_SAME_PROVICE;

猜你喜欢

转载自blog.csdn.net/qq_29956725/article/details/52792455
今日推荐