Spec-Zone.ru › MariaDB

Метки

Синтаксис

label: <construct>
[label]

Метки — это идентификаторы MariaDB, которые могут использоваться для идентификации конструкции BEGIN ... END или цикла. Они имеют максимальную длину 16 символов и могут быть заключены в обратные кавычки (т.е., `).

Метки имеют начальную и конечную части. Начальная часть должна предшествовать той части кода, на которую она ссылается, должна следовать за двоеточием (:) и может быть на той же или на другой строке. Конечная часть необязательна и ничего не добавляет, но может сделать код более читаемым. Если используется, конечная часть должна предшествовать разделителю конструкции (;). Конструкции, идентифицированные меткой, могут быть вложенными. Каждая конструкция может быть идентифицирована только одной меткой.

Метки не обязательно должны быть уникальными в хранимой программе, к которой они относятся. Однако метка для внутреннего цикла не может быть идентичной метке для внешнего цикла. В этом случае будет выдано следующее сообщение об ошибке:

ERROR 1309 (42000): Redefining label <label_name>

Операторы LEAVE и ITERATE могут быть использованы для выхода или повторения части кода, идентифицированной меткой. Они должны находиться в той же хранимой процедуре, триггере или событии, которое содержит целевую метку.

Ниже приведен пример использования простой метки для выхода из цикла LOOP:

CREATE PROCEDURE `test_sp`()
BEGIN
   `my_label`:
   LOOP
      SELECT 'looping';
      LEAVE `my_label`;
   END LOOP;
   SELECT 'out of loop';
END;

Следующая метка используется для выхода из процедуры и имеет конечную часть:

CREATE PROCEDURE `test_sp`()
`my_label`:
BEGIN
   IF @var = 1 THEN
      LEAVE `my_label`;
   END IF;
   DO something();
END `my_label`;
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/labels/

Spec-Zone.ru

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