Что такое петли?
Циклы позволяют определенной части кода в программе выполняться желаемое количество раз.
В этом руководстве мы увидим концепцию цикла в PL / SQL и поток управления в циклах. Ты выучишь-
- Введение в концепцию петель
- Заявления контроля цикла
- Типы циклов в PL / SQL
- Базовый оператор цикла
- Маркировка петель
Введение в концепцию петель
Концепция циклов дает следующее преимущество в кодировании.
- Возможность повторного использования кода
- Уменьшенный размер кода
- Легкость управления
- Пониженная сложность
На приведенной ниже диаграмме в наглядной форме показана концепция зацикливания.
На приведенной выше диаграмме будет проверяться условие цикла, и пока выполняется условие цикла, исполняемый блок будет выполняться.
На каждой итерации переменная счетчика цикла, которая фактически определяет условие цикла, должна изменяться, чтобы управление выходило из цикла. В некоторых случаях эта переменная счетчика цикла является оператором увеличения / уменьшения для предопределенного счетчика, а в некоторых случаях это условие поиска, которое продолжает выполнение блока до тех пор, пока оно не будет удовлетворено.
Заявления контроля цикла
Перед изучением концепции циклов необходимо обязательно изучить операторы управления циклами. Операторы управления циклом - это операторы, которые фактически управляют потоком выполнения внутри цикла. Ниже приводится подробное описание операторов управления циклом.
ПРОДОЛЖИТЬ
Это ключевое слово отправляет команду механизму PL / SQL, что всякий раз, когда механизм PL / SQL встречает это ключевое слово внутри цикла, он пропускает оставшийся код в блоке выполнения кода, и следующая итерация начинается немедленно. Это будет в основном использоваться, если код внутри цикла хочет пропустить для определенных значений итерации.
ВЫХОД / ВЫХОД КОГДА
Это ключевое слово отправляет команду механизму PL / SQL, что всякий раз, когда механизм PL / SQL встречает это ключевое слово, он немедленно выходит из текущего цикла. Если движок PL / SQL встречает EXIT во вложенном цикле, он выйдет из цикла, в котором он был определен, то есть во вложенных циклах, указание EXIT во внутреннем цикле приведет к выходу управления только из внутреннего цикла, но не из внешнего контура. После EXIT WHEN следует выражение, которое дает логический результат. Если результат ИСТИНА, то элемент управления ВЫХОДИТ.
ИДТИ К
Этот оператор передаст управление помеченному оператору ("GOTO
- Передача управления может производиться только внутри подпрограмм.
- Передача управления не может быть выполнена из части обработки исключений в часть выполнения
Использование этого оператора не рекомендуется, если нет других альтернатив, поскольку отслеживание кода и контроля будет очень затруднено в программе из-за передачи управления от одной части к другой.
Типы циклов в PL / SQL
PL / SQL предоставляет следующие три типа циклов
- Оператор основного цикла
- Для оператора цикла
- Оператор цикла while
Базовый оператор цикла
Этот оператор цикла является самой простой структурой цикла в PL / SQL. Блок выполнения начинается с ключевого слова «LOOP» и заканчивается ключевым словом «END LOOP».
Условие выхода должно быть указано внутри этого исполнительного блока, чтобы управление выходило из цикла.
Для выхода из цикла необходимо явно указать ключевое слово EXIT в исполнительной части.
LOOPОбъяснение синтаксиса:END LOOP;
- В приведенном выше синтаксисе ключевое слово «LOOP» обозначает начало цикла, а «END LOOP» обозначает конец цикла.
- Блок выполнения содержит весь код, который необходимо выполнить, включая условие EXIT.
- Часть выполнения может содержать любой оператор выполнения.
Примечание. Основной оператор цикла без ключевого слова EXIT будет бесконечным циклом бесконечности.
Пример 1 : В этом примере мы собираемся напечатать число от 1 до 5, используя основной оператор цикла. Для этого мы выполним следующий код.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Пояснение к коду:
- Строка кода 2 : Объявление переменной 'a' как тип данных 'NUMBER' и инициализация ее значением '1'.
- Строка кода 4 : Печать оператора «Программа запущена».
- Строка кода 5: Ключевое слово «LOOP» отмечает начало цикла.
- Строка кода 6: выводит значение «а».
- Строка кода 7: увеличивает значение «а» на +1.
- Строка кода 8: проверяет, больше ли значение 'a' 5.
- Строка кода 9: Ключевое слово END LOOP отмечает конец блока выполнения.
- Код со строки 6 по строку 8 будет продолжать выполняться до тех пор, пока 'a' не достигнет значения 6, так как условие вернет TRUE, и управление выйдет из цикла.
- Строка кода 10: Печать оператора "Программа завершена"
Маркировка петель
В PL / SQL циклы могут быть помечены. Метка должна быть заключена между «<<» и «>>». Маркировка циклов, особенно в кодах вложенных циклов, обеспечит большую удобочитаемость. Метка может быть дана в команде EXIT для выхода из этого конкретного цикла. Используя метку, можно заставить элемент управления напрямую выходить из внешнего цикла вложенных циклов из любого места внутри циклов, задавая команду выхода, за которой следует метка внешнего цикла.
<Объяснение синтаксиса:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- В приведенном выше синтаксисе цикл вывода имеет внутри еще один цикл.
- «<
>» и «< >» являются метками этих циклов.
Пример 1 : В этом примере мы собираемся напечатать число, начиная с 1, используя оператор цикла Basic. Каждое число будет напечатано столько раз, сколько его значение. Верхний предел серии фиксируется в части объявления программы. Давайте узнаем, как мы можем использовать концепцию этикетки для достижения этой цели. Для этого мы выполним следующий код
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Пояснение к коду:
- Строка кода 2-3 : Объявление переменных 'a' и 'b' как типа данных 'NUMBER'.
- Строка кода 4 : Объявление переменной upper_limit как типа данных NUMBER со значением 4
- Строка кода 6 : Печать оператора «Программа запущена».
- Строка кода 7: внешний цикл был помечен как «outer_loop»
- Строка кода 9: значение 'a' увеличивается на 1.
- Строка кода 11: Внутренний цикл обозначен как «inner_loop».
- Строка кода 13: условие ВЫХОДА, которое проверяет, превышает ли значение «a» значение «upper_limit». Если нет, то он пойдет дальше, иначе он напрямую выйдет из внешнего цикла.
- Строка кода 14: печать значения 'b'.
- Строка кода 15: Увеличивает значение «b» на +1.
- Строка кода 16: условие ВЫХОДА, которое проверяет, превышает ли значение «b» значение «a». Если да, то он выйдет из управления из внутреннего цикла.
- Строка кода 14: Печать оператора "Программа завершена"
Резюме
Петля | Базовый цикл |
Критерии выхода | Выйти при обнаружении ключевого слова EXIT в исполнительной части. |
использование | Хорошо использовать, когда выход не основан на каком-либо конкретном условии. |