Що таке петлі?
Цикли дозволяють виконувати певну частину коду в програмі бажану кількість разів.
У цьому підручнику ми побачимо концепцію циклу в PL / SQL та потік управління у циклах. Ти навчишся-
- Вступ до концепції циклів
- Заяви про контроль циклу
- Типи циклу в PL / SQL
- Заява про основний цикл
- Позначення петель
Вступ до концепції циклів
Концепція циклів забезпечує наступну перевагу в кодуванні.
- Багаторазове використання коду
- Зменшений розмір коду
- Просте управління
- Знижена складність
На наведеній нижче схемі зображена концепція циклу у зображальному стилі
На наведеній вище схемі буде перевірятися умова циклу, і поки виконується умова циклу, виконуватиметься блок виконання.
У кожній ітерації змінна циклу лічильника, яка фактично вирішує умову циклу, повинна модифікуватися, щоб зробити вихід управління з циклу. У деяких випадках ця змінна лічильника циклу є оператором збільшення / зменшення для заздалегідь визначеного підрахунку, а в деяких випадках це умова пошуку, яка продовжує виконувати блок, поки він його не задовольнить.
Заяви про контроль циклу
Перш ніж вивчати концепцію циклів, обов'язково вивчити оператори керування циклами. Інструкції керування циклами - це ті, які фактично контролюють потік виконання всередині циклу. Нижче наведено детальний опис операторів керування циклом.
ПРОДОВЖИТИ
Це ключове слово надсилає інструкцію механізму PL / SQL, що всякий раз, коли механізм PL / SQL зустрічає це ключове слово всередині циклу, воно пропускає залишився код у блоці виконання коду, і наступна ітерація починається негайно. Це буде в основному використовуватися, якщо код всередині циклу хоче бути пропущений для певних значень ітерацій.
ВИХІД / ВИХІД КОЛИ
Це ключове слово надсилає інструкцію механізму PL / SQL, що всякий раз, коли механізм PL / SQL зустріне це ключове слово, воно негайно вийде з поточного циклу. Якщо механізм PL / SQL зустрічає EXIT у вкладеному циклі, тоді він вийде із циклу, в якому він був визначений, тобто у вкладених циклах, якщо EXIT у внутрішньому циклі вийде лише з контролю з внутрішнього циклу, але не із зовнішньої петлі. 'EXIT WHEN' супроводжується виразом, який дає логічний результат. Якщо результат TRUE, тоді елемент керування буде EXIT.
ЙТИ ДО
Цей оператор передасть елемент керування позначеному оператору ("GOTO
- Передача контролю може здійснюватися лише в рамках підпрограм.
- Передача контролю не може бути здійснена з частини, яка обробляє винятки, у частину виконання
Використання цього твердження не рекомендується, якщо немає інших альтернатив, оскільки простежуваність кодового контролю буде дуже складною в програмі через передачу управління з однієї частини в іншу частину.
Типи циклу в PL / SQL
PL / SQL забезпечує наступні три типи циклів
- Вираз основного циклу
- Для оператора циклу
- Інструкція while
Заява про основний цикл
Цей оператор циклу є найпростішою структурою циклу в PL / SQL. Блок виконання починається з ключового слова 'LOOP' і закінчується ключовим словом 'END LOOP'.
Умова виходу повинна бути вказана всередині цього блоку виконання, щоб контролювати вихід із циклу.
Для виходу з циклу йому потрібно чітко вказати ключове слово EXIT у частині виконання.
LOOPПояснення синтаксису:END LOOP;
- У наведеному вище синтаксисі ключове слово 'LOOP' позначає початок циклу, а 'END LOOP' - кінець циклу.
- Блок виконання містить весь код, який потрібно виконати, включаючи умову EXIT.
- Частина виконання може містити будь-яку заяву про виконання.
Примітка: Вираз основного циклу без ключового слова EXIT буде INFINITE-LOOP, який ніколи не зупиниться.
Приклад 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: Друкує значення 'a'.
- Рядок коду 7: Збільшує значення 'a' на +1.
- Кодовий рядок 8: Перевіряє, чи значення "a" більше 5.
- Рядок коду 9: Ключове слово 'END LOOP' позначає кінець блоку виконання.
- Код від рядка 6 до рядка 8 буде продовжувати виконуватися доти, поки 'a' не досягне значення 6, оскільки умова поверне TRUE, а елемент керування EXIT із циклу.
- Рядок коду 10: Друк виписки "Програма виконана"
Позначення петель
У PL / SQL цикли можуть бути позначені. Етикетку слід укладати між "<<" і ">>". Позначення циклів, особливо у вкладених кодах циклів, дасть більше читабельності. Мітку можна вказати в команді EXIT для виходу з цього конкретного циклу. Використовуючи ярлик, елемент керування можна зробити безпосереднім виходом із зовнішнього циклу вкладених циклів з будь-якого місця всередині циклів, давши команду виходу, за якою слідує мітка зовнішнього циклу.
<Пояснення синтаксису:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- У наведеному вище синтаксисі цикл out має всередині ще один цикл.
- '<
>' і '< >' є мітками цих циклів.
Приклад 1 : У цьому прикладі ми будемо друкувати номер, починаючи з 1, використовуючи оператор Basic loop. Кожне число буде надруковано стільки разів, скільки його значення. Верхня межа серії визначена в частині декларації програми. Давайте дізнаємось, як ми можемо використовувати концепцію етикетки для досягнення цього. Для цього ми виконаємо наступний код
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: Зовнішній цикл позначений як "external_loop"
- Рядок коду 9: Значення 'a' збільшується на 1.
- Рядок коду 11: Внутрішній цикл позначений як "inner_loop".
- Рядок коду 13: умова EXIT, яка перевіряє, чи значення 'a' перевищує значення 'upper_limit'. Якщо ні, тоді він піде далі, інакше він виходить безпосередньо із зовнішнього циклу.
- Кодовий рядок 14: Друк значення 'b'.
- Рядок коду 15: Збільшує значення 'b' на +1.
- Рядок коду 16: умова EXIT, яка перевіряє, чи значення "b" вище, ніж "a". Якщо так, тоді він вийде з елемента керування з внутрішнього циклу.
- Код, рядок 14: Друк виписки "Програма виконана"
Резюме
Петля | Базова петля |
Критерії виходу | Вихід при зустрічі ключового слова 'EXIT' у виконанні |
Використання | Добре використовувати, коли вихід не базується на якійсь конкретній умові. |