MySQL存储过程之流程控制while,repeat,loop循环

目录
  • 前言
  • 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循环的文章就介绍到这了,更多相关MySQL存储过程 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL循环语句之while循环测试

    mysql 操作同样有循环语句操作,网上说有3中标准的循环方式: while 循环 . loop 循环和repeat循环.还有一种非标准的循环: goto. 鉴于goto 语句的跳跃性会造成使用的的思维混乱,所以不建议使用. 这几个循环语句的格式如下: WHILE--DO--END WHILE REPEAT--UNTIL END REPEAT LOOP--END LOOP GOTO. 目前我只测试了 while 循环: delimiter $$ // 定义结束符为 $$ drop procedu

  • MySQL中Nested-Loop Join算法小结

    不知不觉的玩了两年多的MySQL,发现很多人都说MySQL对比Oracle来说,优化器做的比较差,其实某种程度上来说确实是这样,但是毕竟MySQL才到5.7版本,Oracle都已经发展到12c了,今天我就看了看MySQL的连接算法,嗯,现在来说还是不支持Hash Join,只有Nested-Loop Join,那今天就总结一下我学习的心得吧. Nested-Loop Join基本算法实现,伪代码是这样: for each row in t1 matching range { for each r

  • 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

  • PHP_MySQL教程-第二天while循环与数据库操作第1/2页

    第一页 while循环  在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面.我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色.  首先,我们用下面的代码来查询数据库内容. 复制代码 代码如下: <html>  <body>  <?php  $db = mysql_connect("localhost", "root");  mysql_select_db("mydb"

  • MySQL存储过程中使用WHILE循环语句的方法

    本文实例讲述了MySQL存储过程中使用WHILE循环语句的方法.分享给大家供大家参考.具体如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc() -> BEGIN -> -> DECLARE i int; -> SET i=1; -> loop1: WHILE i<=10 DO -> IF MOD(i,2)<>0 THEN /*Even num

  • MySQL与MSSQl使用While语句循环生成测试数据的代码

    在MySQL中,使用While语句循环与SQL Server中有所不同,代码测试通过. MSSQL中使用while语句循环生成数据的方法: 示例代码: 复制代码 代码如下: declare @a int set @a = 1 while @a<25 begin INSERT INTO demotable (id,item1,item2) VALUES (@a,"abc","123") set @a = @a + 1 end MySQL中,使用while循环处理

  • MySQL存储过程之流程控制while,repeat,loop循环

    目录 前言 while循环 repeat循环 loop循环 前言 循环是一段在程序中只出现一次,但可能会连续运行多次的代码. 循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环. 循环分类: while repeat loop 循环控制: leave 类似于 break,跳出,结束当前所在的循环 iterate类似于 continue,继续,结束本次循环,继续下一次 while循环 [标签:]while 循环条件 do 循环体; end while[ 标签]; -- 创建测试表 c

  • 关于SQL 存储过程入门基础(流程控制)

    这里我们讲一下存储过程的流程控制, if else,case ,while,这里没有for循环的 ,这些跟c,c++,c#等语言都差不过的. 一,首先来看if  else使用 复制代码 代码如下: if 条件beginsql 语句endelse beginsql语句end 看个简单例子 复制代码 代码如下: declare @id int           --声明个变量set @id=5                 --设置厨初始值if(@id=1)    begin        pr

  • MYSQL存储过程 注释详解

    目录 1.使用说明 2.准备 3.语法 3.1 变量及赋值 3.2 入参出参 3.3 流程控制-判断 3.4 流程控制-循环 3.5 流程控制-退出.继续循环 3.6 游标 3.7 存储过程中的handler 4.练习 4.1 利用存储过程更新数据 4.3 其他场景: 5.其他 5.1 characteristic 5.2 死循环处理 5.3 可以在select语句中写case 5.4 临时表 0.环境说明: 软件 版本 mysql 8.0 navicat 1.使用说明 存储过程时数据库的一个重

  • MySQL实例精讲单行函数以及字符数学日期流程控制

    目录 一.字符函数 1.大小写控制函数 2.字符控制函数 二.数学函数 三.日期函数 四.其他函数 五.流程控制函数 一.字符函数 1.大小写控制函数 ①UPPER():转换成大写 SELECT UPPER('Hello'); ②LOWER():转换成小写 SELECT LOWER('Hello'); 2.字符控制函数 ①LENGTH():获取参数值的字节个数 SELECT LENGTH('叶绿体不忘呼吸aaaa'); ②CONCAT():拼接字符串 SELECT CONCAT('Hello',

  • MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

    在MySQL中可以使用IF().IFNULL().NULLIF().ISNULL()函数进行流程的控制. 1.IF()函数的使用 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值. SELECT IF(TRUE,'A','B'); -- 输出结果:A SELECT IF(FALSE,'A','B'); -- 输出结果:B 2.IFNULL()函数的使用 IFNULL(expr1,expr2),如果

  • MySQL存储过程的概念与用法实例

    目录 概念 特性 存储过程通常有以下优点 格式 创建存储过程 定义变量 局部变量 用户变量 系统变量 存储过程 存储过程传参-in 存储过程传参-out 存储过程传参-inout 流程控制 流程控制-判断 流程控制语句-case 控制流程-循环 while循环 repeat循环 loop循环 游标 异常处理-HANDLER句柄 总结 概念 MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,存储过就是数据库SQ

  • 彻底搞懂MySQL存储过程和函数

    目录 1.0  创建存储过程和函数 1. 创建存储过程 2. 创建存储函数 2|0变量 1. 定义变量 2. 变量赋值 3|0定义条件和处理程序 1. 定义条件 2. 定义处理程序 4|0光标 1. 声明光标 2. 打开光标 3. 使用光标 4. 关闭光标 5|0流程控制 1. IF 语句 2. CASE 语句 3. LOOP 语句 4. LEAVE 语句 5. ITERATE 语句 6. REPEAT 语句 7. WHILE 语句 6|0操作存储过程和函数 1. 调用存储过程 2. 调用存储函

  • MySql存储过程与函数详解

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输. 一.存储过程 1.1.基本语法 CREATE PROCEDURE sp_name ([proc_parameter[,...]])    [characteristic ...] routine_body Sp_name:存储过程的名称

  • mysql存储过程详解

    1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中面

随机推荐