[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]
使用标签 BEGIN ... END 块,以及对于 LOOP, REPEAT, WHILE 语句。这些语句的标签使用遵循以下规则:Labels are permitted for
BEGIN ... END
blocks and for the LOOP,
REPEAT, and
WHILE statements. Label use for
those statements follows these rules:
begin_labelmust be followed by a colon.begin_labelcan be given withoutend_label。如果end_labelis present, it must be the same asbegin_label.begin_labelcan be given withoutend_label. Ifend_labelis present, it must be the same asbegin_label.end_labelcannot be given withoutbegin_label.同一嵌套层级的标签必须是不同的。Labels at the same nesting level must be distinct.
标签长度可达 16 个字符。Labels can be up to 16 characters long.
在标记结构中引用标签时,可以使用 ITERATE 或 LEAVE 语句。以下示例使用这些语句来继续迭代或终止循环: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;
块标签的作用域不包含块内声明的处理器代码。详情请参见 第 15.6.7.2 节,“DECLARE ...HANDLER 语句“。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”.