Пока зацикливается Oracle PL/SQL с примером
⚡ Умное резюме
Oracle Цикл WHILE в PL/SQL повторяет блок кода, пока выполняется условие. Это цикл с проверкой условия выхода перед каждой итерацией, поэтому блок может выполняться ноль раз, и для его выполнения не требуется явное ключевое слово EXIT.
Что такое цикл While в PL/SQL?
Пока цикл В PL/SQL это работает аналогично базовому оператору цикла, за исключением того, что условие выхода находится в самом начале цикла. Это работает как цикл с проверкой входа, где блок выполнения запускается только в том случае, если условие выполнено, поскольку условие выхода проверяется перед выполнением.
Для выхода из цикла явное указание ключевого слова 'EXIT' не требуется, поскольку условие проверяется неявно каждый раз.
Синтаксис цикла PL/SQL while
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Ключевое слово 'WHILE' обозначает начало цикла, а 'END LOOP' — его конец.
- Условие выхода проверяется каждый раз перед началом выполнения соответствующей части программы.
- Блок выполнения содержит весь код, который необходимо запустить.
- Часть, отвечающая за выполнение, может содержать любой исполняемый оператор.
Пример Oracle PL/SQL цикл while
В этом примере мы выводим числа от 1 до 5, используя оператор цикла WHILE.

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Объяснение:
- Code строка 2: Объявляем переменную 'a' как 'NUMBER' и инициализируем её значением '1'.
- Code строка 4: Выводится сообщение «Программа запущена».
- Code строка 5: Ключевое слово 'WHILE' обозначает начало цикла и проверяет, меньше ли значение 'a' или равно 5.
- Code строка 7: Печатает значение «а».
- Code строка 8: Увеличивает значение 'a' на 1.
- Code строка 9: Ключевое слово 'END LOOP' обозначает конец блока выполнения.
- Строки 7 и 8 продолжают выполняться до тех пор, пока значение 'a' не достигнет 6, после чего условие возвращает FALSE, и управление завершается. поиска.
- Code строка 10: Выводится сообщение «Программа завершена».
Цикл WHILE против цикла FOR против простого цикла
PL/SQL предлагает три типа циклов, и выбор подходящего позволяет сделать код более понятным. Цикл WHILE подходит для повторения, управляемого условием, в то время как два других подходят для фиксированного количества повторений или явно контролируемого выхода.
| Loop | Критерии выхода | Лучше всего использовать, когда |
|---|---|---|
| Цикл WHILE | Условие в верхней части становится ложным | Количество итераций неизвестно. |
| Цикл FOR | Счетчик достигает конца диапазона | Количество итераций известно. |
| Базовый цикл | Явный выход из блока. | Выход контролируется вручную. |
Поскольку цикл WHILE проверяет условие в начале, тело цикла может не выполняться ни разу, если условие изначально ложно. Это ключевое отличие от обычного цикла, тело которого всегда выполняется как минимум один раз.
Как избежать бесконечного цикла while
Цикл WHILE полностью зависит от того, насколько управляющая переменная приближается к условию выхода. Если этого никогда не происходит, цикл выполняется бесконечно, и сессия зависает. Три привычки предотвращают это:
- Изменяйте счетчик на каждой итерации. В примере значение переменной 'a' увеличивается внутри цикла; удаление этой строки привело бы к бесконечному циклу.
- Проверьте границу. Убедитесь, что условие действительно может стать ложным для начального значения, а не только для идеального случая.
- Добавьте безопасный выход, когда... В цикле, управляемом данными, оператор EXIT WHEN, устанавливающий максимальное количество итераций, служит защитой от неожиданного значения.
Когда количество повторений действительно фиксировано, цикл FOR полностью исключает этот риск, поскольку его счетчик управляется автоматически.

