zoukankan      html  css  js  c++  java
  • mysql 存储过程

    CREATE DEFINER=`root`@`%` PROCEDURE `proc_get_penaltyMonthDealNoDeal`(IN `yeartmp` int)
    BEGIN
    -- =============================================
    -- Author:  作者 
    -- Create date: 创建时间
    -- Description: 描述
    -- =============================================
    	declare i int default 0;
    	declare	monthtmp varchar(2);
    	declare	yearFirstDay varchar(150) default NULL;
    	declare	yearLastDay varchar(150)  default null;
    	declare	totalnumcount int  default 0;-- 总的违章数量
    	declare	dealnumcount  int  default 0; -- 已处理违章数量
    					
      set i = 1;	-- 标量为0第一个月
    	
    	-- 创建车辆录入类型临时表	
    	drop table if exists tmp1;
    	create TEMPORARY table tmp1
    	(
    		`month` int(2),
    		`totalnum` int(10),	-- 总的违章数量
    		`dealnum` int(10)	-- 已处理违章数量
    	);
    	-- 循环查询12个月的数据
    	while i <= 12 do
    		set monthtmp=i;
    		set totalnumcount=0,dealnumcount=0;
    		if (LENGTH(monthtmp) = 1) then
    			set monthtmp='0'+monthtmp;
    		end if;
    	-- select  yeartmp,monthtmp;
    		-- 取得某年某月的第一天
    		set yearFirstDay=concat(yeartmp,'-' , monthtmp,'-01 00:00:00');
    		-- set	yearFirstDay= str_to_date(CONCAT(date_format(yeartmp+'-'+monthtmp,'%Y-%m-%d') ,' 15:11:11' ),'%Y-%m-%d %T') 
    		
    		-- select yearFirstDay;
    
    		-- 取得某年某月的最后一天
         set  yearLastDay=concat(last_day(yearFirstDay), ' 23:59:59');
    	
    		
    		-- 取得总的违章数量
    		set totalnumcount=(select COUNT(*) from jt_penalty where isundo <> 0 and  illegaltime <= date_format(yearLastDay ,'%Y-%m-%d %T')) ;
    		
    		-- 取得至今这个月已处理违章数量
    		set dealnumcount=( select  COUNT(*)  from jt_penalty where isundo <> 0 and illegaltime <= date_format(yearLastDay ,'%Y-%m-%d %T') and isOver in('1','2','3','4'));
    
    		-- 插入临时表	
    		insert  tmp1 values(i,totalnumcount,dealnumcount);
    		-- 标量+1		
    		set i=i+1;
    	END WHILE;
    		-- select*from tmp1;
    		select `month`,`totalnum` as `count` ,`dealnum`  `count1` from tmp1;
    END
    

     注意避坑:变量名不能和表中的字段名称定义一样,否则查询结果会是变量值最后一次的结果。

    如此文对你有帮助,请打赏作者或推荐此文,在此多谢了~

          

  • 相关阅读:
    mysql设置不区分大小写
    java.lang.StackOverflowError: null
    与或非
    mysql自动备份
    Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 不支持“variant”数据类型。
    MySQL主从复制 + Mycat实现读写分离
    Swing做的非阻塞式仿飞秋聊天程序
    Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)
    CMake安装(源码方式)
    多线程使用实例
  • 原文地址:https://www.cnblogs.com/louby/p/9294773.html
Copyright © 2011-2022 走看看