Spec-Zone.ru › MySQL 5.7

13.6.2 Метки операторов

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

Область действия метки блока не включает код обработчиков, объявленных внутри блока. Подробности см. в Разделе 13.6.7.2, «Оператор DECLARE ... HANDLER».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/statement-labels.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API