FirebirdSQL logo

LEAVE

Назначение

Выход из цикла.

Доступно в

PSQL

Синтаксис
[label:]
<loop_stmt>
BEGIN
  ...
  LEAVE [label];
  ...
END

<loop_stmt> ::=
    FOR <select_stmt> INTO <var_list>  DO
  | FOR EXECUTE STATEMENT ... INTO <var_list> DO
  | WHILE (<condition>) DO
Table 1. Параметры оператора LEAVE
Параметр Описание

label

Метка.

select_stmt

Оператор SELECT.

condition

Логическое условие возвращающее TRUE, FALSE или UNKNOWN.

Оператор LEAVE немедленно прекращает работу внутреннего цикла операторов WHILE или FOR.С использованием необязательного параметра label, LEAVE также может выйти и из внешнего цикла, то есть цикла помеченного меткой `.Код продолжает выполняться с первого оператора после завершенного блока цикла.

Примеры LEAVE

Example 1. Использование оператора LEAVE

В этом примере выход из цикла произойдёт при возникновении ошибки вставки в таблицу NUMBERS.Код продолжит своё выполнение с оператора C = 0.

...
WHILE (B < 10) DO
BEGIN
    INSERT INTO NUMBERS(B)
    VALUES (:B);
    B = B + 1;
    WHEN ANY DO
    BEGIN
        EXECUTE PROCEDURE LOG_ERROR (
             CURRENT_TIMESTAMP,
             'ERROR IN B LOOP');
        LEAVE;
    END
END
C = 0;
...
Example 2. Использование оператора LEAVE с меткой

В этом примере оператор LEAVE LOOPA завершает внешний цикл, а LEAVE LOOPB — внутренний.

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

...
STMT1 = 'SELECT NAME FROM FARMS';
LOOPA:
FOR EXECUTE STATEMENT :STMT1
INTO :FARM DO
BEGIN
  STMT2 = 'SELECT NAME ' || 'FROM ANIMALS WHERE FARM = ''';
  LOOPB:
  FOR EXECUTE STATEMENT :STMT2 || :FARM || ''''
  INTO :ANIMAL DO
  BEGIN
    IF (ANIMAL = 'FLUFFY') THEN
      LEAVE LOOPB;
    ELSE IF (ANIMAL = FARM) THEN
      LEAVE LOOPA;
    ELSE
      SUSPEND;
  END
END
...
См. также:

BREAK, EXIT, CONTINUE.

CONTINUE

Назначение

Досрочное начало новой итерации цикла.

Доступно в

PSQL

Синтаксис
[label:]
<loop_stmt>
BEGIN
  ...
  CONTINUE [label];
  ...
END

<loop_stmt> ::=
    FOR <select_stmt> INTO <var_list>  DO
  | FOR EXECUTE STATEMENT ... INTO <var_list> DO
  | WHILE (<condition>) DO
Table 1. Параметры оператора CONTINUE
Параметр Описание

label

Метка.

select_stmt

Оператор SELECT.

condition

Логическое условие возвращающее TRUE, FALSE или UNKNOWN.

Оператор CONTINUE пропускает оставшуюся часть текущего блока цикла и запускает следующую итерацию текущего цикла WHILE или FOR.С использованием необязательного параметра label, CONTINUE также может начинать следующую итерацию для внешнего цикла, то есть цикла, помеченного меткой label.

Примеры CONTINUE

Example 1. Использование оператора CONTINUE
FOR
  SELECT A, D FROM ATABLE INTO :achar, :ddate
DO BEGIN
  IF (ddate < current_data - 30) THEN
    CONTINUE;
  ELSE
    /* do stuff */
  ...
END
См. также:

LEAVE, BREAK.