首页数据库MySQL流程控制循环的类型有几种

MySQL流程控制循环的类型有几种

时间2024-03-22 00:35:03发布访客分类数据库浏览1114
导读:这篇文章主要介绍了title,讲解详细,步骤过程清晰,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。 前言 循环是一段在程序中只出现一次,但可能会连续运行多次的代...
这篇文章主要介绍了title,讲解详细,步骤过程清晰,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。

前言

  • 循环是一段在程序中只出现一次,但可能会连续运行多次的代码。
  • 循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环。

循环分类:

  • while
  • repeat
  • loop

循环控制:

leave 类似于 break,跳出,结束当前所在的循环

iterate类似于 continue,继续,结束本次循环,继续下一次

while循环

【标签:】while 循环条件 do
循环体;
    
end while【 标签】;
    
登录后复制
-- 创建测试表
create table user (
uid int primary_key,
username varchar ( 50 ),
password varchar ( 50 )
);
    
登录后复制
-- -------存储过程-while
delimiter $$
create procedure proc16_while1(in insertcount int)
begin
declare i int default 1;
    
label:while i=insertcount do
insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
    
set i=i+1;
    
end while label;
    
end $$
delimiter ;
    
call proc16_while(10);
    
登录后复制

存储过程语法是固定的:delimiter $$ create peocedure 循环名(参数)begin 代码 end $$ delimiter;

注意在写循环体的时候,必须要要有定义循环的初识变量,采用declare i int default 默认值

然后就是dlabel:while 判断条件 do 循环体 end while label; end & & 必须要有

-- -------存储过程-while + leave
truncate table user;
    
delimiter $$
create procedure proc16_while2(in insertcount int)
begin
declare i int default 1;
    
label:while i=insertcount do
insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
    
if i=5 then leave label;
    
end if;
    
set i=i+1;
    
end while label;
    
end $$
delimiter ;
    
call proc16_while2(10);
    
登录后复制

如果在内部需要跳出循环的话,采用if 判断 ,但是最后需要end if 结尾

这里的leave就是 跳出循环,相对于break

-- -------存储过程-while+iterate
truncate table user;
    
delimiter $$
create procedure proc16_while3(in insertcount int)
begin
declare i int default 1;
    
label:while i=insertcount do
set i=i+1;
    
if i=5 then iterate label;
    
end if;
    
insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
    
end while label;
    
end $$
delimiter ;
    
call proc16_while3(10);
    
登录后复制

这里的iterate 相对于continue 遇到就不执行下面的代码

repeat循环

repeat
循环体;
    
until 条件表达式
end repeat [标签];
    
登录后复制
-- -------存储过程-循环控制-repeat
use mysql7_procedure;
    
truncate table user;
    
delimiter $$
create procedure proc18_repeat(in insertCount int)
begin
declare i int default 1;
    
label:repeat
insert into user(uid, username, password) values(i,concat('user-',i),'123456');
    
set i = i + 1;
    
until i >
     insertCount
end repeat label;
    
select '循环结束';
    
end $$
delimiter ;
    
call proc18_repeat(100);
    
登录后复制

这个相对于是,无论如何都会执行一次的循环,然后是在内部进行判断,如果满足了就直接跳出

loop循环

 loop
循环体;
    
if 条件表达式 then
leave [标签];
    
end if;
    
end loop;
    
登录后复制
-- -------存储过程-循环控制-loop
truncate table user;
    

delimiter $$
create procedure proc19_loop(in insertCount int)
begin
declare i int default 1;
    
label:loop
insert into user(uid, username, password) values(i,concat('user-',i),'123456');
    
set i = i + 1;
    
if i >
     5
then
leave label;
    
end if;
    
end loop label;
    
select '循环结束';
    
end $$
delimiter ;
    
call proc19_loop(10);
    
登录后复制

这个和repeat不同的是,需要执行之后,利用leave 跳出循环,无论是使用哪种都可以达到我们需要的效果,但是在业务中的应用场景,while还是相对比较的多。



到此这篇关于“MySQL流程控制循环的类型有几种”的文章就介绍到这了,感谢各位的阅读,更多相关MySQL流程控制循环的类型有几种内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MySQL流程控制循环的类型有几种
本文地址: https://pptw.com/jishu/649788.html
mysql深分页问题如何解决? MySQL中timestamp类型有没有时区问题?

游客 回复需填写必要信息