Циклы в MySQL
MySQL предоставляет три цикла: while
, repeat
и loop
. Их можно использовать в теле хранимой процедуры или функции, т.е., между ключевыми словами BEGIN
и END
.
Цикл WHILE
DO
- начало тела циклаEND WHILE
- завершение цикла
Все команды, которые располагаются между этими ключевыми словами, выполняются на каждой итерации цикла.
Количество повторов не обязательно задавать внутри хранимой процедуры. Можно задать его в качестве входящего параметра.
Локальная переменная i
пробегает значение от 0 до заданного в параметре num
. Как только оно достигает заданного пользователем значения, условие становится ложным и цикл прекращает работу.
Для досрочного выхода из цикла предназначен оператор LEAVE
.
Не зависимо от переменной num
, максимальное количество итераций будет не больше 3.
Циклы можно вкладывать друг в друга, поэтому, чтобы команда LEAVE
понимала, какой из циклов следует останавливать, ей всегда передается метка цикла, в данном случае cycle
. Эту метку мы должны поместить перед ключевым словом WHILE
и после ключевого слова END WHILE
.
От оператора LEAVE
, ITERATE отличается тем, что не прекращает выполнение цикла, а лишь досрочно прекращает текущую итерацию.
Счетчик i
проходит по значениям от 1 до 10, на каждой итерации значение счетчика добавляется к строке var. Если if-условие ложное, то значение добавляется два раза, если истинное, срабатывает оператор ITERATE
и текущая итерация завершается досрочно. Поэтому в результатах происходит удвоенные цифры до 5, а после 5 - одиночные.
Цикл REPEAT
В отличии от цикла WHILE
, в REPEAT
условие для выхода из цикла располагается не в начале тела цикла, а в конце после ключевого слова UNTIL
.
Если условие TRUE
- происходит еще одна итерация, если FALSE
- работа цикла прекращается.
Цикл LOOP
LOOP
, в отличие от WHILE
и REPEAT
не имеет условий выхода из цикла. Выход из цикла осуществляется с помощью оперетора LEAVE
, который досрочно прекращает текущую итерацию.
Теги: