日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/7/5 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。