含义

WHILE 语句也是有条件控制的循环语句,当满足条件时,执行循环内的语句,否则退出循环。它的基本语法格式如下:

WHILE search_condition DO
    statement list
END WHILE [end label]

其中,search_condition 参数表示循环执行的条件,满足该条件时循环执行;statement_list 参数表示循环的执行语句。WHILE 循环需要使用 END WHILE 来结束。

使用

whil循环的使用不能像在java中那样直接使用 ,需要结合Mysq中的流程控制语句来使用,
关键字是:procedure
举个例子:有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完?

CREATE PROCEDURE p()
BEGIN
SET @sum:=1024;
SET @num:=1024;
SET @i:=0;
WHILE @num>0 DO
	SET @num:=@num/2-2;
	SET @i:=@i+1;
END WHILE;
SELECT @i;
END@@

通过call p()进行查询,注意设置的结束语句修饰符
我们在这里用的是无参的方法,即p();同样也可以进行有参的写法:
首先介绍一下参数的传递:

create procedure p([in/out/inout]参数名 参数类型)

  • in:该参数可以作为输入,也就是需要调用方法传入值,默认
  • out:该参数可作为输出,即该参数可以作为返回值
  • Inout:既可以作为输入参数,也可以作为输出参数
    在举个例子:
    从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321
CREATE PROCEDURE p1(IN num INT(11))
BEGIN 
SET @sum:=num;
WHILE @sum>1 DO
SET @sum:=@sum-1;
SET num=num*@sum;
END WHILE;
SELECT num;
END@@

此时,我们可以通过
call p1(5)来完成对5的阶乘,
输出结果
在这里插入图片描述

删除存储过程:
sql语句:
drop procedure 存储过程名

Logo

更多推荐