在我们做统计的时候,尤其是复杂的数据统计,写sql是非常麻烦且痛苦的一件事情。尤其是表结构设计的不适合做统计的时候,更是难以下手。当做 统计的时候;需要牵扯到多张表且每个统计信息需要关联N张表才能出来结果的时候,大家可以用mysql的存储过程来进行业务处理。
前端时间做统计;业务场景是这样的:
首先判断当前时间是否为一月,若是一月,则取每个机构的去年和前年的每个月的收入统计;若不是一月,则取每个机构的今年和去年的每个月的收入统计。
存储过程进行for循环的业务逻辑呢大体是这样的:
通过定义变量(把值塞给变量,可以是数据库查到的,也可以是自定义),
定义游标(进行for循环,在for循环内进行读取数据,把读取的数据塞给变量,通过这些变量进行insert into 表,从而把得到的数据保存到临时表里。)
定义循环体判断变量,用来判断循环何时结束。

如下图:

1: DECLARE 是定义变量的语法。

2: DECLARE deptInfo CURSOR FOR select dept_id,dept_name from sys_dept where parent_id=‘100’ and del_flag=‘0’ and status=‘0’;

DECLARE deptInfo CURSOR FOR select dept_id,dept_name 意思是把查询的结果赋值给定义的游标deptInfo 。

mysqlfor循环用法 mysql写for循环_mysql

2:对游标进行循环,在循环内进行业务处理

mysqlfor循环用法 mysql写for循环_for循环_02

mysqlfor循环用法 mysql写for循环_存储过程_03


如上 就是存储过程进行for循环处理的流程。好了本次分享就到此结束。