MySQL 8.3 Release Notes
[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 语句”。