Spec-Zone .ru
спецификации, руководства, описания, API
|
[begin_label
:] BEGIN [statement_list
]END [end_label
][begin_label
:] LOOPstatement_list
END LOOP [end_label
][begin_label
:] REPEATstatement_list
UNTILsearch_condition
END REPEAT [end_label
][begin_label
:] WHILEsearch_condition
DOstatement_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
Синтаксис".