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.