您的位置: 翼速应用 > 业内知识 > 数据库 > 正文

关于MySQL流程控制之while、repeat、loop循环详解

本文带大家一起详细了解一下关于MySQL流程控制之while、repeat、loop循环的知识,循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,详细内容请看本文。


关于MySQL流程控制之while、repeat、loop循环详解


关于MySQL流程控制之while、repeat、loop循环详解


前言


●  循环是一段在程序中只出现一次,但可能会连续运行多次的代码。

●  循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环。



循环分类:


●  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流程控制之while、repeat、loop循环详解到这里就结束了,翼速应用平台内有更多相关资讯,欢迎查阅!

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题