1 leave
1.1 概念
可以用在循环语句内,或者以BEGIN和END包裹起来的程序体内,表示跳出循环或者跳出程序体的操作。
如果你有面向过程的编程语言的使用经验,你可以把LEAVE理解为break。
1.2 语法
leave 标记名
1.3 举例
/*
**举例1:**创建存储过程“leave_begin)",声明INT类型的IN参数num。给BEGIN...END加标记名,
并在BEGIN...END中使用IF语句判断num参数的值。I|
-如果num<=0,则使用LEAVE语句退出BEGIN...END;
-如果num=1,则查询“employees"表的平均新资;
-如果num=2,则查询“employees"表的最低薪资;
-如果num>2,则查询“employees"表的最高薪资。
IF语句结束后查询“employees"表的总人数。
*/
CREATE PROCEDURE leave_begin ( IN num INT ) begin_lable : BEGIN #相当于起个别名
IF
num <= 0 THEN
LEAVE begin_lable;
ELSEIF num = 1 THEN
SELECT
avg( salary )
FROM
employees;
ELSEIF num = 2 THEN
SELECT
min( salary )
FROM
employees;
ELSEIF num > 2 THEN
SELECT
max( employees )
FROM
emploees;
END IF;
END;
CALL leave_begin(2);
2 iterate
2.1 概念
只能用在循环语句(LOOP、REPEAT和WHILE语句)内,表示重新开始循环,将执行顺序转到语句段开头处。
如果你有面向过程的编程语言的使用经验,你可以把ITERATE理解为continue,意思为“再次循环”。
2.2 语法
iterate 标记名
2.3 举例
#举例:定义局部变量num,初始值为0。循环结构中执行num+1操作。
#如果num<10,则继续执行循环;
#如果num>15,则退出循环结构;
CREATE PROCEDURE test_iterate () BEGIN
DECLARE
num INT DEFAULT 0;
while_lable :
WHILE
TRUE DO
SET num = num + 1;
IF
num < 10 THEN ITERATE while_lable;
ELSEIF
num > 15 THEN LEAVE while_lable;
END IF;
END WHILE;
SELECT
num;
END;
CALL test_iterate();