REPEAT语句
REPEAT语句是有条件控制的循环语句。当满足特定条件时,就会跳出循环语句。REPEAT语句的基本语法形式如下:
[begin_label:] REPEAT
statement_list;
UNTILsearch_condition
END REPEAT [end_label]
其中,参数statement_list表示循环执行语句。参数search_condition表示循环结束的条件,满足该条件时循环结束。
例如:求1+2+...+10的和。
代码示例:
mysql> delimiter $ #改变结束符为'$'
mysql> create procedure pro_test_repeat(in input int,out op int) #创建存储过程
-> begin
-> declare flag int; #定义变量
-> set flag=0; #初始化
-> repeat #循环开始
-> set flag=flag+1; #令flag自增1
-> set input=input+flag; #计算0+1+...+10的结果
-> until flag=10 #循环的结束条件
-> end repeat;
-> set op=input;
-> end;
-> $
mysql> delimiter ; #改变结束符为';'
mysql> call pro_test_repeat(0,@op); #调用存储过程
mysql> select @op; #打印变量op
该示例循环执行flag加1的操作,flag值为10时结束循环,没结束钱让input=input+flag来求出0+1+...+10的值,最后循环结束后再赋值给变量op。REPEAT循环都用END REPEAT结束。
WHILE语句
WHILE语句也是有条件控制的循环语句,但WHILE语句和REPEAT语句是不一样的。WHILE语句是当满足条件时执行循环内的语句。WHILE语句的基本语法形式如下:
[begin_label:] WHILE search_condition DO
Statement_list
END WHILE[end_label]
其中,参数statement_condition表示循环执行的条件,满足该条件时循环执行;参数statement_list表示循环的执行语句。
例如:求1+2+...+10的和
代码示例:
mysql> delimiter $ #改变结束符为'$'
mysql> create procedure pro_test_while(in input int,out op int) #创建存储过程
-> begin
-> declare flag int;
-> set flag=0;
-> while flag<10 do #循环结束条件
-> set flag=flag+1;
-> set input=input+flag; #计算0+1+....+10的结果
-> end while;
-> set op=input;
-> end;
-> $
mysql> delimiter ; #改变结束符为';'
mysql> call pro_test_while(0,@op); #调用存储过程
mysql> select @op; #打印变量op
该示例循环执行flag+1操作,flag的值为10时结束循环,先通过while后面的条件判断flag是否满足要求,满足则执行input=input+flag。不满足则跳出循环就和C语言里的while do比较相似。