• 技术文章 >数据库 >mysql教程

    MySQL流程控制之while、repeat、loop循环

    长期闲置长期闲置2022-08-09 20:22:12转载333
    本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL存储过程之流程控制while、repeat、loop循环,循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,下面一起来看一下,希望对大家有帮助。

    推荐学习:mysql视频教程

    前言

    循环分类:

    循环控制:

    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流程控制之while、repeat、loop循环的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除
    专题推荐:mysql
    上一篇:怎样解决mysql深分页问题 下一篇:深入浅析mysql的timestamp存在的时区问题
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 浅析mysql设置最大连接数的两种方法• 实例详解MySQL数据库视图• 实例解析MySQL约束知识点• MySQL安装常见报错处理(总结分享)• 一文掌握Mysql中的Enum数据类型
    1/1

    PHP中文网