13.6.2 Statement Labels语句标签

[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]

Labels are permitted for BEGIN ... END blocks and for the LOOP, REPEAT, and WHILE statements. BEGIN ... END块、LOOP语句、REPEAT语句和WHILE语句允许使用标签。Label use for those statements follows these rules:这些语句的标签使用遵循以下规则:

To refer to a label within the labeled construct, use an ITERATE or LEAVE statement. 要引用已标记构造中的标签,请使用ITERATE语句或LEAVE语句。The following example uses those statements to continue iterating or terminate the loop:以下示例使用这些语句继续迭代或终止循环:

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;

The scope of a block label does not include the code for handlers declared within the block. 块标签的范围不包括块内声明的处理程序的代码。For details, see Section 13.6.7.2, “DECLARE ... HANDLER Statement”.有关详细信息,请参阅第13.6.7.2节,“DECLARE ... HANDLER语句”