Oracle PL/SQL FOR LOOP із прикладом
Що таке цикл For?
Інструкція «ЦИКЛ FOR» найкраще підходить, якщо ви хочете виконати код відому кількість разів, а не на основі якихось інших умов.
У цьому циклі буде вказано нижню межу та верхню межу, і поки змінна циклу знаходиться в межах цього діапазону, цикл виконуватиметься.
Змінна циклу є самоінкрементною, тому в цьому циклі не потрібна явна операція збільшення. Змінну циклу не потрібно оголошувати, оскільки вона оголошується неявно.
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" позначає початок циклу, і оголошено змінну_циклу "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" як типу даних "ЧИСЛО".
- Рядок коду 4: Друк заяви «Програма запущена».
- Рядок коду 5: Ключове слово "FOR" позначає початок циклу, і оголошено змінну_циклу "a". Тепер він матиме значення від 1 до 3
- Рядок коду 7: Кожного разу скидання значення «b» на «1».
- Рядок коду 8: Внутрішній поки петля перевіряє умову a>=b.
- Рядок коду 10: Друкує значення 'a', якщо задовольняється зазначена вище умова.
- Рядок коду 14: Друк повідомлення «Програма виконана»
Підсумки
Петля | Цикл FOR |
---|---|
Критерії ВИХОДУ | Вийдіть, коли лічильник досягне межі |
Використання | Добре використовувати, коли відома кількість циклів, які потрібно виконати. |