在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环。还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体介绍了。

这几个循环语句的格式如下:
WHILE……DO……END WHILE
REPEAT……UNTIL END REPEAT
LOOP……END LOOP
GOTO。

下面首先使用第一种循环编写一个例子。

DROP PROCEDURE IF EXISTS `pro10`;
DELIMITER $$
CREATE PROCEDURE `pro10`()
BEGIN-- 定义变量DECLARE v_i int unsigned DEFAULT 0;WHILE v_i < 5 DOSELECT v_i;SET v_i = v_i+1;END WHILE;
END $$
DELIMITER ;CALL pro10();

再来看一下第二个循环控制指令 REPEAT……END REPEAT。使用REPEAT循环控制语句编写下面这个存储过程:

DROP PROCEDURE IF EXISTS `pro11`;
DELIMITER $$
CREATE PROCEDURE `pro11`()
BEGIN-- 定义变量DECLARE v_i int unsigned DEFAULT 0;REPEATSELECT v_i;SET v_i = v_i+1;UNTIL v_i >= 5 END REPEAT;
END $$
DELIMITER ;CALL pro11();

再来看一下第三个循环控制语句LOOP……END LOOP。编写一个存储过程程序如下:

DROP PROCEDURE IF EXISTS `pro12`;
DELIMITER $$
CREATE PROCEDURE `pro12`()
BEGIN-- 定义变量DECLARE v_i int unsigned DEFAULT 0;LOOP_LABEL:LOOPSELECT v_i;SET v_i = v_i+1;IF v_i >= 5 THENLEAVE LOOP_LABEL;END IF;END LOOP;
END $$
DELIMITER ;CALL pro12();

DROP PROCEDURE IF EXISTS `pro13`;
DELIMITER $$
CREATE PROCEDURE `pro13`()
BEGIN-- 定义变量DECLARE v_i int unsigned DEFAULT 0;LOOP_LABEL:LOOPIF v_i = 3 THENSET v_i = v_i+1;ITERATE LOOP_LABEL; # => continueEND IF;SELECT v_i;SET v_i = v_i+1;IF v_i >= 5 THENLEAVE LOOP_LABEL; # => break;END IF;END LOOP;
END $$
DELIMITER ;CALL pro13();

MySQL存储过程中的循环怎么写相关推荐

  1. MySQL存储过程中的3种循环

    MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...

  2. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  3. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  4. mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?

    我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...

  5. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

  6. mysql 存储过程中limit

    mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...

  7. mysql 存储过程中 if else的使用 和赋值方式

    mysql 存储过程中 if else的使用 和赋值方式 在mysql 中顶一个变量的语法 DECLARE variable_name datatype(size) DEFAULT default_v ...

  8. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  9. mysql 日期循环_如何在mysql存储过程中循环日期时间

    即时通讯使用mysql存储过程,如何制作一个循环,每1小时变量strathour将有1小时的间隔然后返回查询的总数.当starthour小于11月的日期时,它将具有1小时的间隔并执行查询. 这是我的代 ...

最新文章

  1. 12月5日 第二冲刺周期个人站立会议内容报告(第五天)
  2. mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择
  3. Django(part8)--响应及HttpResponse对象
  4. 【十二省联考2019】字符串问题【后缀自动机】【拓扑排序】
  5. 重启php7.0-fpm
  6. 无法显示jinglingzhoushou-2.0.4.AppImage
  7. 组态王JAVA,组态王肿么实现点击按钮以后可以实现画面的运行
  8. php mysql后台管理模板_[开源]TP6后台管理模板
  9. 电视不正常Android镜像投屏,爱奇艺乐播投屏
  10. 德州停电悲剧不会重演 智慧用电是新方向
  11. UE4-目录结构简介
  12. Kettle carte部署与运行
  13. wi-fi频宽设置_如何设置TP-Link Wi-Fi智能插头
  14. 求解:Assertion failed (size.width0 size.height0) in cv::imshow, file C:\build\master_winpack-buil
  15. 嵌入式操作系统判断题
  16. mysql授权连接_MySQL 连接认证授权步骤
  17. NOIP2016 “西湖边超萌小松鼠” 模拟赛
  18. 点云数据类型分析 sensor_msgs/PointCloud2
  19. 在岸人民币和离岸人民币的区别
  20. SAP ABAP 报表新增字段,重新生成维护视图,以及过程中产生的问题处理

热门文章

  1. 前几行 python_调包侠神器2.0发布,Python机器学习模型搭建只需要几行代码
  2. Leetcode每日一题:1002.find-common-characters(查找常用字符串)
  3. Java并发(二)——ThreadLocal
  4. python 数据写入json文件时中文显示Unicode编码问题
  5. 第二十三:Appium+Pytest实现app并发测试
  6. java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮
  7. Java自动化测试框架-07 - TestNG之Factory篇 - (详细教程)
  8. idea overlays文件夹_Intellij IDEA 文件修改提示星号
  9. 浙江万里学院计算机专业宿舍,2020年浙江万里学院宿舍条件环境照片 宿舍空调相关配置介绍...
  10. 通用Shell脚本,可以优雅的启动/关闭/重启/JAVA服务