REPEAT#

Синтаксис#

[label :] REPEAT
    statements
UNTIL condition
END REPEAT

Описание#

Оператор REPEAT UNTIL — это необязательная конструкция в SQL пользовательские функции, которая позволяет выполнять блок операторов до тех пор, пока выполняется условие. Условие проверяется в конце каждой итерации.

Блок операторов выполняется как минимум один раз. После первой и каждой последующей итерации вычисляется выражение condition. Если результат true, выполнение переходит к END REPEAT и продолжается со следующего оператора. Если результат false, блок выполняется снова.

Необязательная label перед ключевым словом REPEAT может использоваться для именования блока.

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

Примеры#

Следующая SQL UDF показывает UDF с оператором REPEAT, который выполняется, пока значение a не станет больше или равно 10.

FUNCTION test_repeat(a bigint)
  RETURNS bigint
  BEGIN
    REPEAT
      SET a = a + 1;
    UNTIL a >= 10
    END REPEAT;
    RETURN a;
  END

Поскольку a также является входным значением и увеличивается до проверки, UDF всегда возвращает 10 для входных значений 9 или меньше и входное значение плюс 1 для всех больших значений.

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

SELECT test_repeat(5); -- 10
SELECT test_repeat(9); -- 10
SELECT test_repeat(10); -- 11
SELECT test_repeat(11); -- 12
SELECT test_repeat(12); -- 13

Дополнительные примеры различной сложности, демонстрирующие использование оператора REPEAT в сочетании с другими операторами, доступны в Примеры SQL UDF.

См. также#