Oracle PL/SQL FOR LOOP с примером
Что такое цикл for?
Оператор FOR LOOP лучше всего подходит, когда вы хотите выполнить код известное количество раз, а не на основе каких-то других условий.
В этом цикле будут указаны нижний и верхний пределы, и пока переменная цикла находится между этим диапазоном, цикл будет выполняться.
Переменная цикла является самоинкрементной, поэтому в этом цикле не требуется явная операция увеличения. Переменную цикла объявлять не требуется, поскольку она объявляется неявно.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Объяснение синтаксиса:
- В приведенном выше синтаксисе ключевое слово FOR отмечает начало цикла, а ключевое слово END LOOP отмечает конец цикла.
- Переменная цикла оценивается каждый раз перед выполнением исполнительной части.
- Блок выполнения содержит весь код, который необходимо выполнить. Исполняющая часть может содержать любой оператор выполнения.
- Переменная_цикла объявляется неявно во время выполнения всего цикла, и область действия этой переменной_переменной будет находиться только внутри этого цикла.
- Если переменная цикла вышла из диапазона, то управление выйдет из цикла.
- Цикл можно заставить работать в обратном порядке, добавив ключевое слово REVERSE перед low_limit.
Пример 1: В этом примере мы собираемся напечатать число от 1 до 5, используя оператор цикла FOR. Для этого мы выполним следующий код.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Пояснение к коду:
- Строка кода 2: Печать сообщения «Программа запущена».
- Строка кода 3: Ключевое слово «FOR» отмечает начало цикла и объявляется переменная цикла «a». Теперь оно будет иметь значение от 1 до 5.
- Строка кода 5: Печатает значение «а».
- Строка кода 6: Ключевое слово «END LOOP» отмечает конец блока выполнения.
- Код из строки 5 будет продолжать выполняться до тех пор, пока «a» не достигнет значения 6, поскольку условие не будет выполнено, и элемент управления выйдет из цикла.
- Строка кода 7: Печать заявления «Программа завершена»
Вложенные циклы
Операторы цикла также могут быть вложенными. Внешний и внутренний цикл могут быть разных типов. Во вложенном цикле для каждого значения итерации внешнего цикла внутренний цикл выполняется полностью.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Объяснение синтаксиса:
- В приведенном выше синтаксисе внешний цикл имеет внутри еще один цикл.
- Циклы могут быть любого типа, а функциональная часть выполнения одинакова.
Пример 1: В этом примере мы собираемся напечатать число от 1 до 3, используя оператор цикла FOR. Каждое число будет напечатано столько раз, сколько его значение. Для этого мы выполним следующий код.
DECLARE b NUMBER; BEGIN dbms output put line(‘Program started' ); FOR a IN 1..3 LOOP b:=1; WHILE (a>=b) LOOP dbms output put line(a); b:=b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed' ); END; /
Пояснение к коду:
- Строка кода 2: объявление переменной «b» как типа данных «NUMBER».
- Строка кода 4: Печать сообщения «Программа запущена».
- Строка кода 5: Ключевое слово «FOR» отмечает начало цикла и объявляется переменная цикла «a». Теперь оно будет иметь значение от 1 до 3.
- Строка кода 7: Сброс значения «b» на «1» каждый раз.
- Строка кода 8: Внутренний в то время как цикл проверяет условие a>=b.
- Строка кода 10: Печатает значение «a», если вышеуказанное условие выполняется.
- Строка кода 14: Печать заявления «Программа завершена»
Резюме
Петля | Цикл FOR |
---|---|
Критерии ВЫХОДА | Выйти, когда счетчик достигнет предела |
Применение | Хорошо использовать, когда известно количество циклов, которые необходимо выполнить. |