mysql循环while、repeat、loop使⽤(六)⼀、循环使⽤
mysql常见的三种循环⽅式:while、repeat和loop循环。还有⼀种goto,不推荐使⽤。
前提1、创建基本表结构
# 创建表结构
drop table if exists `test_table`;
create table `test_table`(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '⾃增主键',
`modelid` varchar(50) COMMENT '字符主键',
`modelname` varchar(50) COMMENT '名称',
`desc` varchar(50) COMMENT '描述',
primary key (`id`)
)
ENGINE=InnoDB charset=utf8 collate=utf8_bin;
1.1、while循环
delimiter //  #定义标识符为双斜杠
DROP PROCEDURE IF EXISTS my_procedure ; #如果存在 my_procedure 存储过程则删除
CREATE PROCEDURE my_procedure () #创建⽆参存储过程
BEGIN
DECLARE n INT DEFAULT 1 ; #申明变量
WHILE n <= 10 DO    #结束循环的条件:
insert into test_table (modelid,modelname,`desc`)
value (n,CONCAT('name',n),'desc');  #处理语句
SET n = n + 1 ; #循环⼀次,i加⼀
END WHILE ; #结束while循环
select count(*) from test_table;
END
//             
delimiter ;
call my_procedure(); #调⽤存储过程
1.2、repeat
delimiter //                            #定义标识符为双斜杠
drop procedure if exists my_procedure;          #如果存在test存储过程则删除
create procedure my_procedure()                #创建⽆参存储过程,名称为test
begin
declare n int default1;                      #申明变量
# set i = 0;                          #变量赋值
repeat
insert into test_table (modelid,modelname,`desc`)
value (n,CONCAT('name',n),'desc');
set n = n + 1;                  #循环⼀次,i加⼀
until n > 10 end repeat;            #结束循环的条件: 当i⼤于10时跳出repeat循环
select count(*) from test_table;                #查看test表数据
end
//                                      #结束定义语句
call my_procedure();                            #调⽤存储过程
1.3、loop
delimiter //                            #定义标识符为双斜杠
drop procedure if exists my_procedure;          #如果存在test存储过程则删除
create procedure my_procedure()                #创建⽆参存储过程,名称为test
begin
declare i int;                      #申明变量
set i = 1;                          #变量赋值
lp : loop                          #lp为循环体名,可随意 loop为关键字
insert into test_table (modelid,modelname,`desc`)
value (i,CONCAT('name',i),'desc');
set i = i + 1;                  #循环⼀次,i加⼀
drop table if exists userif i > 10 then                  #结束循环的条件: 当i⼤于10时跳出loop循环
leave lp;
end if;
end loop;
select count(*) from test_table;                #查看test表数据
end
//                                      #结束定义语句
call my_procedure();                            #调⽤存储过程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。