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是参数,整数begindeclare i int default 0; -- 变量声明i while i < a do -- 判断条件,满足条件则执行下面的循环,不满足条件则跳过,结束循环-- 插入数据set @t = DATE_ADD(DATE('2021-12-20'), INTERVAL - i DAY); -- 从'2021-12-20'往前回溯a天INSERT INTO test_table (`id`,`time`) VALUE (i , @t) ; set i = i + 1; -- 每执行一次循环之后 i +1 end while; -- 结束循环end $$ -- 结束存储过程
第三步:调用循环过程
-- 调用存储过程
call insertdata(10); -- 设置a为10,也就是从固定日期往前回溯10天的数据-- 查看存储过程执行之后的数据
select * from test_table;
番外:有时候会出现报错Commands out of sync; you can't run this command now
这个报错和循环过程没有关系,这个窗口失效了,重新打开一个窗口再查询就正常了
MySQL - 创建存储过程Procedure,Do While实现循环相关推荐
- mysql创建存储过程及函数详解
文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...
- MySQL创建存储过程(CREATE PROCEDURE)
MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程.下面 ...
- 2、MySQL创建存储过程(CREATE PROCEDURE)(函数)
MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程. 编写存 ...
- mysql 创建存储过程语法_mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...
- mysql创建存储过程权限问题
首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种: ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 建立存储过程 EXECUT ...
- MySQL——创建存储过程和函数
简单地说,存储过程就是一条或多条 SQL 语句的集合,可视为批文件,但是其作用不仅限于批处理.存储程序可以分为存储过程和函数.存储过程要用 CALL 语句来调用,并且只能用输出变量返回值. 1. ...
- linux mysql 创建存储过程_linux系统下无法创建mysql存储过程问题
创建存储过程的完整命令: CREATE PROCEDURE pro1() begin declare b int default 0; end; mysql中运行存储过程创建语句错误结果: root@ ...
- mysql创建存储过程及遍历查询结果,mysql 用存储过程遍历结果集
mysql 用存储过程遍历结果集 mysql (业务场景:取A表中数据插入B表中) 使用存储过程 以下面两步:sql --建立存储过程优化 DROP PROCEDURE IF EXISTS `proc ...
- mysql 创建 存储过程 与执行存储过程 每天零凌晨一点定时执行
-- 创建存储过程 DELIMITER $ --声明存储过程的结束符 CREATE PROCEDURE Up_bookinfo() --存储过程名称(参数列表) BEGIN --开始DELETE fr ...
最新文章
- python中newfile是干嘛用的_python 文件操作方法
- Python Django 查询数据缓存
- 网站设计大访问量应用的解决方案
- 技术有温,代码有爱——1024技术公益信息无障碍
- java merge json出错删除相同的json
- Equipment upload - ERP ACK
- 前端学习(1042):todoList存储
- 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...
- Android开发笔记(一百一十四)发布工具
- 传奇服务器维护活力值怎么算,电竞传奇活力值怎么补满 电竞传奇快速恢复方法...
- 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
- html5获取经纬度失败,h5获取经纬度有问题
- onenote 无法正常使用的解决办法
- 台式计算机没有声音图标,台式电脑没声音,小扬声器图标也没有。
- 服务器cpu型号各个数字,服务器cpu型号 数字
- 利用SSRF攻击Redis
- 阿里云大数据助理工程师ACA认证最新笔记(2021)
- Hadoop垃圾回收站与YARN日志聚合
- oracle分区表优点
- php做扫描功能,phpscanphp后门扫描神器