mysql 完整的存储过程

完整的存储过程(写的注释发不出来可能是加了'//'的原因吧)




DROP PROCEDURE  if EXISTS pro_rep;


delimiter $$


create PROCEDURE  pro_rep(s varchar(6), e varchar(6), d varchar(20))
begin

declare rep_id                   int;

declare  rep_JournalNumber       varchar(20);
                   
declare  rep_RcName              varchar(10);
                   
declare rep_HouseNumber          varchar(100);
                   
declare rep_HCName               varchar(10);
                   
declare rep_OwnerName            varchar(50);
                   
declare rep_FeeYearMonth         varchar(6);
                   
declare rep_EfsNum               decimal(10,0);
                   
declare rep_EfeNum               decimal(10,0);
                   
declare rep_EssNum               decimal(10,0);
                   
declare rep_EseNum               decimal(10,0);
                   
declare rep_EtsNum               decimal(10,0);
                   
declare rep_EteNum               decimal(10,0);
                   
declare rep_Etotal               decimal(10,0);
                   
declare rep_EPrice               decimal(10,4);
                   
declare rep_WfsNum               decimal(10,0);
                   
declare rep_WfeNum               decimal(10,0);
                   
declare rep_WssNum               decimal(10,0);
                   
declare rep_WseNum               decimal(10,0);
                   
declare rep_WtsNum               decimal(10,0);
                   
declare rep_WteNum               decimal(10,0);
                   
declare rep_Wtotal               decimal(10,0);
                   
declare rep_WPrice               decimal(10,2);
                   
declare rep_Dkm                  decimal(10,2);
                   
declare rep_Dkmje                decimal(15,2);
                   
declare rep_HouseArea             decimal(10,4);
                   
declare rep_PropertyExpensePrice  decimal(10,2);
                 
declare rep_Wyje                 decimal(15,2);
                  
declare rep_LateFee               decimal(15,2);
                   
declare rep_UltimoBalance         decimal(15,2);
                   
declare rep_InstantBalance       decimal(15,2);
                  
declare rep_AmountReceivable    decimal(15,2);
                  
declare rep_RealReceivable       decimal(15,2);
                   
declare rep_RepairFee             decimal(15,2);
                 
declare rep_OtherFee              decimal(15,2);

 

declare sum_EfsNum               decimal(10,0) default 0;
                   
declare sum_EfeNum               decimal(10,0) default 0;
                   
declare sum_EssNum               decimal(10,0) default 0;
                   
declare sum_EseNum               decimal(10,0) default 0;
                   
declare sum_EtsNum               decimal(10,0) default 0;
                   
declare sum_EteNum               decimal(10,0) default 0;
                   
declare sum_Etotal               decimal(10,0) default 0;
                   
declare sum_WfsNum               decimal(10,0) default 0;
                   
declare sum_WfeNum               decimal(10,0) default 0;
                   
declare sum_WssNum               decimal(10,0) default 0;
                   
declare sum_WseNum               decimal(10,0) default 0;
                   
declare sum_WtsNum               decimal(10,0) default 0;
                   
declare sum_WteNum               decimal(10,0) default 0;
                   
declare sum_Wtotal               decimal(10,0) default 0;
                   
declare sum_Dkm                  decimal(10,2) default 0.00;
                   
declare sum_Dkmje                decimal(15,2) default 0.00;
                   
declare sum_HouseArea             decimal(10,4) default 0.0000;
       
declare sum_Wyje                 decimal(15,2) default 0.00;
                  
declare sum_LateFee               decimal(15,2) default 0.00;
                   
declare sum_UltimoBalance         decimal(15,2) default 0.00;
                   
declare sum_InstantBalance       decimal(15,2) default 0.00;
                  
declare sum_AmountReceivable    decimal(15,2) default 0.00;
                  
declare sum_RealReceivable       decimal(15,2) default 0.00;
                   
declare sum_RepairFee             decimal(15,2) default 0.00;
                 
declare sum_OtherFee              decimal(15,2) default 0.00;

declare rep_count int default 0;

 

declare stop int default 0;

 

declare cur_rep cursor
 for
 select Id,JournalNumber,RcName,HouseNumber,HCName,OwnerName,FeeYearMonth,
        EfsNum,EfeNum,EssNum,EseNum,EtsNum,EteNum,Etotal,EPrice,               

WfsNum,WfeNum,WssNum,WseNum,WtsNum,WteNum,Wtotal,WPrice,
        Dkm,Dkmje,HouseArea,PropertyExpensePrice,Wyje,
        LateFee,UltimoBalance,InstantBalance,AmountReceivable,RealReceivable,RepairFee,OtherFee
 from detailstatement
 where FeeYearMonth between s and e
 and (housenumber like CONCAT('%区',d,'号%'));


declare CONTINUE HANDLER FOR SQLSTATE '02000' SET  stop=1;



open cur_rep;

 

fetch cur_rep into
rep_id,rep_JournalNumber,rep_RcName,rep_HouseNumber,rep_HCName,rep_OwnerName,rep_FeeYearMonth,
rep_EfsNum,rep_EfeNum,rep_EssNum,rep_EseNum,rep_EtsNum,rep_EteNum,rep_Etotal,rep_EPrice,
rep_WfsNum,rep_WfeNum,rep_WssNum,rep_WseNum,rep_WtsNum,rep_WteNum,rep_Wtotal,rep_WPrice,
rep_Dkm,rep_Dkmje, rep_HouseArea,rep_PropertyExpensePrice,rep_Wyje,rep_LateFee, rep_UltimoBalance,
rep_InstantBalance,rep_AmountReceivable,rep_RealReceivable,rep_RepairFee,rep_OtherFee;

 

while stop<>1 do

 

 

select rep_id,rep_JournalNumber,rep_RcName,rep_HouseNumber,rep_HCName,rep_OwnerName,rep_FeeYearMonth,
       rep_EfsNum,rep_EfeNum,rep_EssNum,rep_EseNum,rep_EtsNum,rep_EteNum,rep_Etotal,rep_EPrice, 
       rep_WfsNum,rep_WfeNum,rep_WssNum,rep_WseNum,rep_WtsNum,rep_WteNum,rep_Wtotal,rep_WPrice,        

       rep_Dkm,rep_Dkmje,rep_HouseArea,rep_PropertyExpensePrice,rep_Wyje,
       rep_LateFee,rep_UltimoBalance,rep_InstantBalance,rep_AmountReceivable,
       rep_RealReceivable,rep_RepairFee,rep_OtherFee;

 

set rep_count = rep_count + 1 ;

set sum_EfsNum = sum_EfsNum + rep_EfsNum ;
                   
set sum_EfeNum = sum_EfeNum + rep_EfeNum ;
                   
set sum_EssNum = sum_EssNum + rep_EssNum ;
                   
set sum_EseNum = sum_EseNum + rep_EseNum ;
                   
set sum_EtsNum = sum_EtsNum + rep_EtsNum ;
                   
set sum_EteNum = sum_EteNum + rep_EteNum ;
                   
set sum_Etotal = sum_Etotal + rep_Etotal ;
                   
set sum_WfsNum = sum_WfsNum + rep_WfsNum ;
                   
set sum_WfeNum = sum_WfeNum + rep_WfeNum ;
                   
set sum_WssNum = sum_WssNum + rep_WssNum ;
                   
set sum_WseNum = sum_WseNum + rep_WseNum ;
                   
set sum_WtsNum = sum_WtsNum + rep_WtsNum ;
                   
set sum_WteNum = sum_WteNum + rep_WteNum ;
                   
set sum_Wtotal = sum_Wtotal + rep_Wtotal ;
                   
set sum_Dkm = sum_Dkm + rep_Dkm ;
                   
set sum_Dkmje = sum_Dkmje + rep_Dkmje ;
                   
set sum_HouseArea = sum_HouseArea + rep_HouseArea ;
       
set sum_Wyje = sum_Wyje + rep_Wyje ;
                  
set sum_LateFee = sum_LateFee + rep_LateFee ;
                   
set sum_UltimoBalance = sum_UltimoBalance + rep_UltimoBalance ;
                   
set sum_InstantBalance = sum_InstantBalance + rep_InstantBalance ;
                  
set sum_AmountReceivable = sum_AmountReceivable + rep_AmountReceivable ;
                  
set sum_RealReceivable = sum_RealReceivable + rep_RealReceivable ;
                   
set sum_RepairFee = sum_RepairFee + rep_RepairFee ;
                 
set sum_OtherFee = sum_OtherFee  + rep_OtherFee ;

 

insert into cx values(
       rep_id,rep_JournalNumber,rep_RcName,rep_HouseNumber,rep_HCName,rep_OwnerName,rep_FeeYearMonth,
       rep_EfsNum,rep_EfeNum,rep_EssNum,rep_EseNum,rep_EtsNum,rep_EteNum,rep_Etotal,rep_EPrice,        

rep_WfsNum,rep_WfeNum,rep_WssNum,rep_WseNum,rep_WtsNum,rep_WteNum,rep_Wtotal,rep_WPrice,
       rep_Dkm,rep_Dkmje,rep_HouseArea,rep_PropertyExpensePrice,rep_Wyje,rep_LateFee,rep_UltimoBalance,
       rep_InstantBalance,rep_AmountReceivable,rep_RealReceivable,rep_RepairFee,rep_OtherFee);

 


fetch cur_rep into
rep_id,rep_JournalNumber,rep_RcName,rep_HouseNumber,rep_HCName,rep_OwnerName,rep_FeeYearMonth,
rep_EfsNum,rep_EfeNum,rep_EssNum,rep_EseNum,rep_EtsNum,rep_EteNum,rep_Etotal,rep_EPrice,
rep_WfsNum,rep_WfeNum,rep_WssNum,rep_WseNum,rep_WtsNum,rep_WteNum,rep_Wtotal,rep_WPrice,
rep_Dkm,rep_Dkmje, rep_HouseArea,rep_PropertyExpensePrice,rep_Wyje,rep_LateFee, rep_UltimoBalance,
rep_InstantBalance,rep_AmountReceivable,rep_RealReceivable,rep_RepairFee,rep_OtherFee;

 

end while;


insert into  cx values(
   '合计',rep_count ,'--','--','--','--','--',              

sum_EfsNum,sum_EfeNum,sum_EssNum,sum_EseNum,sum_EtsNum,sum_EteNum,sum_Etotal,'--',
   sum_WfsNum,sum_WfeNum,sum_WssNum,sum_WseNum,sum_WtsNum,sum_WteNum,sum_Wtotal,'--',
   sum_Dkm,sum_Dkmje,sum_HouseArea,'--',sum_Wyje,sum_LateFee,sum_UltimoBalance,
   sum_InstantBalance,sum_AmountReceivable,sum_RealReceivable,sum_RepairFee,sum_OtherFee);

 

close cur_rep;

end;
$$

delimiter ;


 



drop procedure if exists pro_test;
delimiter $$
create procedure pro_test(s varchar(6),e varchar(6))
begin

declare sum_EfsNum               decimal(10,0) default 0;
                   
declare sum_EfeNum               decimal(10,0) default 0;
                   
declare sum_EssNum               decimal(10,0) default 0;
                   
declare sum_EseNum               decimal(10,0) default 0;
                   
declare sum_EtsNum               decimal(10,0) default 0;
                   
declare sum_EteNum               decimal(10,0) default 0;
                   
declare sum_Etotal               decimal(10,0) default 0;
                   
declare sum_WfsNum               decimal(10,0) default 0;
                   
declare sum_WfeNum               decimal(10,0) default 0;
                   
declare sum_WssNum               decimal(10,0) default 0;
                   
declare sum_WseNum               decimal(10,0) default 0;
                   
declare sum_WtsNum               decimal(10,0) default 0;
                   
declare sum_WteNum               decimal(10,0) default 0;
                   
declare sum_Wtotal               decimal(10,0) default 0;
                   
declare sum_Dkm                  decimal(10,2) default 0.00;
                   
declare sum_Dkmje                decimal(15,2) default 0.00;
                   
declare sum_HouseArea             decimal(10,4) default 0.0000;
       
declare sum_Wyje                 decimal(15,2) default 0.00;
                  
declare sum_LateFee               decimal(15,2) default 0.00;
                   
declare sum_UltimoBalance         decimal(15,2) default 0.00;
                   
declare sum_InstantBalance       decimal(15,2) default 0.00;
                  
declare sum_AmountReceivable    decimal(15,2) default 0.00;
                  
declare sum_RealReceivable       decimal(15,2) default 0.00;
                   
declare sum_RepairFee             decimal(15,2) default 0.00;
                 
declare sum_OtherFee              decimal(15,2) default 0.00;

declare rep_count int default 0;

declare rep_num varchar(20);


declare stop int default 0;

declare cur_rep1 cursor
 for
 select DISTINCT  substring_index(substring(housenumber,5),'号',1)
 from detailstatement
 where FeeYearMonth between s  and e  ;

declare CONTINUE HANDLER FOR SQLSTATE '02000' SET  stop=1;

open cur_rep1;

drop temporary table if exists cx;

 

CREATE temporary table if not exists  cx (
 Id                    varchar(20),
 JournalNumber         varchar(20),
 RcName                varchar(10),
 HouseNumber           varchar(100),
 HCName                varchar(10),
 OwnerName             varchar(50),
 FeeYearMonth          varchar(6),
 EfsNum                varchar(20),
 EfeNum                varchar(20),
 EssNum                varchar(20),
 EseNum                varchar(20),
 EtsNum                varchar(20),
 EteNum                varchar(20),
 Etotal                varchar(20),
 EPrice                varchar(20),
 WfsNum                varchar(20),
 WfeNum                varchar(20),
 WssNum                varchar(20),
 WseNum                varchar(20),
 WtsNum                varchar(20),
 WteNum                varchar(20),
 Wtotal                varchar(20),
 WPrice                varchar(20),
 Dkm                   varchar(20),
 Dkmje                 varchar(20),
 HouseArea             varchar(20),
 PropertyExpensePrice  varchar(20),
 Wyje                  varchar(20),
 LateFee               varchar(20),
 UltimoBalance         varchar(20),
 InstantBalance        varchar(20),
 AmountReceivable      varchar(20),
 RealReceivable        varchar(20),
 RepairFee             varchar(20),
 OtherFee              varchar(20)
);

insert into  cx values(
       '编号','单据编号','所属小区','房号','类型','姓名','所属年月',
      '一表','一表','二表','二表','三表','三表','用电量','电价',
      '一表','一表','二表','二表','三表','三表','用水量','水价',
      '电控门','电控金额','物业面积','物业单价','物业金额','滞纳金','上月结转','结转下月','本月应收',
      '本月实收','维修费用','其他费用'
 );

fetch cur_rep1 into rep_num;

 

while stop<>1 do
call pro_rep(s,e,rep_num);
fetch cur_rep1 into rep_num;
end while;
close cur_rep1;

select count(Id),
       sum(EfsNum),sum(EfeNum),sum(EssNum),sum(EseNum),sum(EtsNum),sum(EteNum),sum(Etotal),
       sum(WfsNum),sum(WfeNum),sum(WssNum),sum(WseNum),sum(WtsNum),sum(WteNum),sum(Wtotal),
       sum(Dkm),sum(Dkmje),sum(HouseArea),sum(Wyje),
       sum(LateFee),sum(UltimoBalance),sum(InstantBalance),sum(AmountReceivable),
       sum(RealReceivable),sum(RepairFee),sum(OtherFee)
  into rep_count,
       sum_EfsNum ,sum_EfeNum, sum_EssNum,sum_EseNum,sum_EtsNum,sum_EteNum ,sum_Etotal,                

       sum_WfsNum ,sum_WfeNum,sum_WssNum,sum_WseNum,sum_WtsNum,sum_WteNum,sum_Wtotal,
       sum_Dkm,sum_Dkmje,sum_HouseArea,sum_Wyje,sum_LateFee,sum_UltimoBalance,
       sum_InstantBalance,sum_AmountReceivable,sum_RealReceivable,sum_RepairFee,sum_OtherFee
  from cx  where Id not in('合计','总计','编号') ;

insert into  cx values(
       '总计',rep_count,'--','--','--','--','--',
      sum_EfsNum ,sum_EfeNum,sum_EssNum,sum_EseNum,sum_EtsNum,sum_EteNum,sum_Etotal,'--',              

      sum_WfsNum ,sum_WfeNum,sum_WssNum,sum_WseNum,sum_WtsNum,sum_WteNum,sum_Wtotal,'--',
      sum_Dkm,sum_Dkmje,sum_HouseArea,'--',sum_Wyje,sum_LateFee,sum_UltimoBalance,
      sum_InstantBalance,sum_AmountReceivable,sum_RealReceivable,sum_RepairFee,sum_OtherFee
 );


end;

$$
delimiter ;


call pro_test('201002','201002');


select Id,JournalNumber,RcName,HouseNumber,HCName,OwnerName,FeeYearMonth,
        EfsNum,EfeNum,EssNum,EseNum,EtsNum,EteNum,Etotal,EPrice,               

WfsNum,WfeNum,WssNum,WseNum,WtsNum,WteNum,Wtotal,WPrice,
        Dkm,Dkmje,HouseArea,PropertyExpensePrice,Wyje,
        LateFee,UltimoBalance,InstantBalance,AmountReceivable,RealReceivable,RepairFee,OtherFee from cx

into outfile  'd:\\河滨小区2010年02月汇总表.xls';

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值