LOOP#

Синтаксис#

[label :] LOOP
    statements
END LOOP

Описание#

Оператор LOOP — это необязательная конструкция в SQL пользовательские функции, которая позволяет многократно выполнять блок операторов.

Блок statements выполняется до тех пор, пока явное использование LEAVE не завершит цикл. Если выполнение достигает END LOOP, начинается следующая итерация с начала. Операторы LEAVE обычно используются внутри IF, который определяет условие завершения цикла.

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

Примеры#

Следующая функция считает до 100 в цикле с размером шага step, начиная с начального значения start_value, и возвращает количество шагов увеличения в цикле, необходимых для достижения значения 100 или выше:

FUNCTION to_one_hundred(start_value int, step int)
  RETURNS int
  BEGIN
    DECLARE count int DEFAULT 0;
    DECLARE current int DEFAULT 0;
    SET current = start_value;
    abc: LOOP
      IF current >= 100 THEN
        LEAVE abc;
      END IF;
      SET count = count + 1;
      SET current = current + step;
    END LOOP;
    RETURN count;
  END

Примеры вызовов:

SELECT to_one_hundred(90, 1); --10
SELECT to_one_hundred(0, 5); --20
SELECT to_one_hundred(12, 3); -- 30

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

См. также#