MySQL的while循环

https://blog.csdn.net/qq_43012693/article/details/108113810   

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

WHILE search_condition DO
statement list
END WHILE [end label]
1
2
3
其中,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@@
1
2
3
4
5
6
7
8
9
10
11
通过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@@
1
2
3
4
5
6
7
8
9
此时,我们可以通过
call p1(5)来完成对5的阶乘,
输出结果


删除存储过程:
sql语句:
drop procedure 存储过程名
————————————————
版权声明:本文为CSDN博主「小五家的二哈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43012693/article/details/108113810

原文地址:https://www.cnblogs.com/gina11/p/15493792.html