Spec-Zone.ru › MySQL 8.4

15.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;

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

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

Spec-Zone.ru

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