Bootstrap

MySQL - 创建存储过程Procedure,Do While实现循环

处理数据的时候,往往需要回溯历史,比如给用户分群后计算每个群体的用户数趋势,那么就需要计算截止到每一天的各个群体的用户数量,这个时候我们就需要创建存储过程,并且在存储过程中增加循环的功能,以此来实现上述回溯的需求。

第一步:先创建一个初始表,用于循环过程中插入数据

-- 创建表之前先判断有没有这个表存在,有的话就删掉
DROP TABLE IF EXISTS test_table;

-- 创建表
CREATE TABLE `test_table` (
    `id` INT (11) NOT NULL AUTO_INCREMENT,
    `time` VARCHAR (255) DEFAULT '2021-12-22 11:22:32',
    PRIMARY KEY (`id`),
    UNIQUE KEY `time` (`time`)
) ENGINE = INNODB AUTO_INCREMENT = 11 DEFAULT CHARSET = utf8;

-- 创建完先看一眼这个表
desc test_table; 

第二步:创建存储过程

-- 定义结束符为 $$ 
delimiter $$

-- 创建存储过程之前先判断有没有这个存储过程存在,有的话就删掉,防止报错
drop procedure if exists insertdata;
create procedure insertdata( a INT)  -- 创建新的存储过程,a是参数,整数
     begin
     declare i int default 0;  -- 变量声明i 
     
     while i < a do  -
;