MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
[begin_label:] BEGIN [statement_list] END [end_label] [begin_label:] LOOPstatement_listEND LOOP [end_label] [begin_label:] REPEATstatement_listUNTILsearch_conditionEND REPEAT [end_label] [begin_label:] WHILEsearch_conditionDOstatement_listEND WHILE [end_label]
Labels are permitted for
BEGIN ... END
blocks and for the LOOP,
REPEAT, and
WHILE statements. Label use for
those statements follows these rules:
begin_label must be followed by a
colon.
begin_label can be given without
end_label. If
end_label is present, it must be
the same as begin_label.
end_label cannot be given without
begin_label.
Labels at the same nesting level must be distinct.
Labels can be up to 16 characters long.
To refer to a label within the labeled construct, use an
ITERATE or
LEAVE statement. 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 15.6.7.2, “DECLARE ... HANDLER Statement”.