Oracle PL/SQL FOR LOOP с пример
Какво е For Loop?
Операторът „FOR LOOP“ е най-подходящ, когато искате да изпълните код за известен брой пъти, а не въз основа на някакви други условия.
В този цикъл долната граница и горната граница ще бъдат посочени и докато променливата на цикъла е между този диапазон, цикълът ще бъде изпълнен.
Променливата на цикъла е самоинкрементална, така че в този цикъл не е необходима изрична операция за нарастване. Променливата на цикъла не трябва да се декларира, тъй като се декларира имплицитно.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Обяснение на синтаксиса:
- В горния синтаксис ключова дума 'FOR' маркира началото на цикъла, а 'END LOOP' маркира края на цикъла.
- Променливата на цикъла се оценява всеки път, преди да се изпълни частта за изпълнение.
- Блокът за изпълнение съдържа целия код, който трябва да бъде изпълнен. Частта за изпълнение може да съдържа произволен оператор за изпълнение.
- loop_variable се декларира имплицитно по време на изпълнението на целия цикъл и обхватът на тази loop_variable ще бъде само вътре в този цикъл.
- Ако променливата на цикъла излезе извън обхвата, тогава управлението ще излезе от цикъла.
- Цикълът може да бъде накаран да работи в обратен ред, като добавите ключовата дума 'REVERSE' преди lower_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' маркира началото на цикъла и се декларира loop_variable 'a'. Сега ще има стойност, започваща от 1 до 5
- Кодов ред 5: Отпечатва стойността на 'a'.
- Кодов ред 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' маркира началото на цикъла и се декларира loop_variable 'a'. Сега ще има стойност, започваща от 1 до 3
- Кодов ред 7: Нулиране на стойността на 'b' на '1' всеки път.
- Кодов ред 8: Вътрешен докато цикъл проверява за условието a>=b.
- Кодов ред 10: Отпечатва стойността на 'a', стига горното условие да е изпълнено.
- Кодов ред 14: Отпечатване на съобщението „Програмата е завършена“
Oбобщение
| Контур | FOR цикъл |
|---|---|
| Критерии за ИЗХОД | Излезте, когато броячът достигне лимита |
| употреба | Добре е да се използва, когато е известен броят на циклите, които трябва да бъдат изпълнени. |




