MySQL 8.4 Release Notes
15.6.2 语句标签
[begin_label:] BEGIN
[statement_list]
END [end_label]
[begin_label:] LOOP
statement_list
END LOOP [end_label]
[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]
[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]
标签允许在BEGIN ... END
块和LOOP
、REPEAT
、WHILE
语句中使用。对于这些语句,标签使用遵循以下规则:
-
begin_label
必须以冒号结尾。 -
begin_label
可以不带end_label
。如果end_label
存在,它必须与begin_label
相同。 -
end_label
不能不带begin_label
。 -
同一层次的标签必须不同。
-
标签的长度不能超过16个字符。
要在标签构造中引用标签,可以使用ITERATE
或LEAVE
语句。以下示例使用这些语句来继续迭代或终止循环:
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN ITERATE label1; END IF;
LEAVE label1;
END LOOP label1;
END;
块标签的作用域不包括在块中声明的处理程序代码。详见第15.6.7.2节,“DECLARE ... HANDLER语句”。