• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法分析

    本文实例讲述了mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法。分享给大家供大家参考,具体如下:

    MySQL提供循环语句,允许我们根据条件重复执行一个SQL代码块其中有三个循环语句:WHILE,REPEAT和LOOP,我们接下来分别看下。首先是WHILE语句来看下语法:

    WHILE expression DO
      statements
    END WHILE
    
    

    WHILE循环在每次迭代开始时检查表达式。 如果expressionevaluates为TRUE,MySQL将执行WHILE和END WHILE之间的语句,直到expressionevaluates为FALSE。 WHILE循环称为预先测试条件循环,因为它总是在执行前检查语句的表达式。来看下流程图:

    完事咱们尝试在存储过程中使用WHILE循环语句,看个实例:

    DELIMITER $$
     DROP PROCEDURE IF EXISTS test_mysql_while_loop$$
     CREATE PROCEDURE test_mysql_while_loop()
     BEGIN
     DECLARE x INT;
     DECLARE str VARCHAR(255);
     SET x = 1;
     SET str = '';
     WHILE x = 5 DO
     SET str = CONCAT(str,x,',');
     SET x = x + 1; 
     END WHILE;
     SELECT str;
     END$$
    DELIMITER ;
    
    

    在上面的test_mysql_while_loop存储过程中,它的操作是先来重复构建str字符串,直到x变量的值大于5,完事使用select语句显示最终的字符串。我们要注意的是,如果不初始化x变量的值,那么它默认值为NULL。 因此,WHILE循环语句中的条件始终为TRUE,并且我们将有一个不确定的循环,这是不可预料的。废话不多说,我们先来调用test_mysql_while_loopstored存储过程:

    CALL test_mysql_while_loop();
    
    

    执行上面查询语句,得到以下结果:

    mysql> CALL test_mysql_while_loop();
    +------------+
    | str    |
    +------------+
    | 1,2,3,4,5, |
    +------------+
    1 row in set
    Query OK, 0 rows affected
    
    

    完事再来看REPEAT循环语句的语法结构:

    REPEAT
     statements;
    UNTIL expression
    END REPEAT
    
    

    上述sql首先被mysql执行,完事mysql会评估求值表达式(expression),如果表达式(expression)的计算结果为FALSE,则mysql将重复执行该语句,直到该表达式计算结果为TRUE。因为REPEAT循环语句在执行语句后检查表达式(expression),因此REPEAT循环语句也称为测试后循环。咱们来看下流程图:

    完事咱们再来使用REPEAT循环语句重写test_mysql_while_loop存储过程:

    DELIMITER $$
     DROP PROCEDURE IF EXISTS mysql_test_repeat_loop$$
     CREATE PROCEDURE mysql_test_repeat_loop()
     BEGIN
     DECLARE x INT;
     DECLARE str VARCHAR(255);
     SET x = 1;
        SET str = '';
     REPEAT
     SET str = CONCAT(str,x,',');
     SET x = x + 1;
        UNTIL x > 5
        END REPEAT;
        SELECT str;
     END$$
    DELIMITER ;
    
    

    我们要注意的是UNTIL表达式中没有分号(;)。执行上面查询语句,得到以下结果:

    mysql> CALL mysql_test_repeat_loop();
    +------------+
    | str    |
    +------------+
    | 1,2,3,4,5, |
    +------------+
    1 row in set
    Query OK, 0 rows affected
    
    

    最后咱们再来看一个使用LOOP循环语句的示例:

    CREATE PROCEDURE test_mysql_loop()
     BEGIN
     DECLARE x INT;
        DECLARE str VARCHAR(255);
     SET x = 1;
        SET str = '';
     loop_label: LOOP
     IF x > 10 THEN 
     LEAVE loop_label;
     END IF;
     SET x = x + 1;
     IF (x mod 2) THEN
       ITERATE loop_label;
     ELSE
      SET str = CONCAT(str,x,',');
     END IF;
      END LOOP;
      SELECT str;
    END;
    
    

    上述sql具体作用如下:

    执行上面查询语句,得到以下结果:

    mysql> CALL test_mysql_loop();
    +-------------+
    | str     |
    +-------------+
    | 2,4,6,8,10, |
    +-------------+
    1 row in set
    Query OK, 0 rows affected
    
    

    完事咱们再来看下控制循环的两个关键词:

    好啦,本次记录就到这里了。

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL存储过程技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》及《MySQL数据库锁相关技巧汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:
    • MySQL select、insert、update批量操作语句代码实例
    • Python MySQLdb 执行sql语句时的参数传递方式
    • mysql创建表的sql语句详细总结
    • MySQL模糊查询语句整理集合
    • Mysql数据库之常用sql语句进阶与总结
    • Mysql数据库之sql基本语句小结
    • 简单了解mysql语句书写和执行顺序
    上一篇:mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解
    下一篇:MySQL中索引失效的常见场景与规避方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法分析 mysql,存储,过程,之,循环,