MySQL 9.5 Reference Manual Including MySQL NDB Cluster 9.5
[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”.