Поки зациклюється Oracle PL/SQL із прикладом

⚡ Розумний підсумок

Oracle Цикл PL/SQL WHILE повторює блок коду, поки умова залишається істинною. Це цикл перевірки записів, який перевіряє умову виходу перед кожною ітерацією, тому блок може виконуватися нуль разів, і йому не потрібне явне ключове слово EXIT.

  • 🔁 Мета: Цикл WHILE виконується, поки умова істинна, і зупиняється, як тільки вона стає хибною.
  • 🚦 Перевірка входу: Умова перевіряється перед блоком, тому цикл може виконуватися нуль разів.
  • 🧮 ВИХІД НЕ ПОТРІБЕН: Умова перевіряється неявно на кожній ітерації, тому явний EXIT не потрібен.
  • 🔢 Лічильник: Змінна всередині блоку повинна змінитися, щоб умова зрештою стала хибною.
  • ♾️ Безкінечний ризик: Якщо лічильник ніколи не не виконує умову, цикл виконується вічно.
  • 🇧🇷 проти ЗА: Використовуйте WHILE, коли кількість ітерацій невідома, та FOR, коли вона фіксована.
  • 🚪 Ранній вихід: EXIT WHEN все ще може вийти з циклу WHILE до того, як умова стане хибною.

Oracle PL/SQL While Loop

Що таке цикл While у PL/SQL?

Команда Поки петля У PL/SQL працює аналогічно базовому оператору циклу, за винятком того, що умова виходу знаходиться на самому початку циклу. Він працює як цикл перевірки записів, де блок виконання виконується, лише якщо умова виконана, оскільки умова виходу перевіряється перед виконанням.

Для виходу з циклу явно не потрібне ключове слово 'EXIT', оскільки умова щоразу перевіряється неявно.

Синтаксис циклу PL/SQL

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • Ключове слово «WHILE» позначає початок циклу, а «END LOOP» – його кінець.
  • Умова виходу обчислюється щоразу перед початком виконання виконуваної частини.
  • Блок виконання містить весь код, який потрібно виконати.
  • Виконувана частина може містити будь-який виконуваний оператор.

Приклад Oracle PL/SQL While Loop

У цьому прикладі ми друкуємо числа від 1 до 5 за допомогою оператора циклу WHILE.

Приклад циклу PL/SQL
Приклад циклу PL/SQL
DECLARE
a NUMBER := 1;
BEGIN
dbms_output.put_line('Program started');
WHILE (a <= 5)
LOOP
dbms_output.put_line(a);
a:= a+1;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Пояснення:

  • Code рядок 2: Оголошення змінної 'a' як 'NUMBER' та ініціалізація її значенням '1'.
  • Code рядок 4: Виведення повідомлення «Програма запущена».
  • Code рядок 5: Ключове слово 'WHILE' позначає початок циклу та перевіряє, чи значення 'a' менше або дорівнює 5.
  • Code рядок 7: Друкує значення 'a'.
  • Code рядок 8: Збільшує значення 'a' на 1.
  • Code рядок 9: Ключове слово 'END LOOP' позначає кінець блоку виконання.
  • Рядки 7 та 8 продовжують виконуватися, доки 'a' не досягне значення 6, після чого умова повертає FALSE, і керування виходить з петля.
  • Code рядок 10: Виведення повідомлення «Програма завершена».

Цикл WHILE проти циклу FOR проти базового циклу

PL/SQL пропонує три типи циклів, і вибір правильного з них забезпечує зрозумілість коду. Цикл WHILE підходить для повторення, керованого умовою, тоді як два інші підходять для фіксованої кількості або явно контрольованого виходу.

Петля Критерії виходу Найкраще використовувати, коли
Цикл WHILE Умова зверху стає хибною Кількість ітерацій невідома
Цикл FOR Лічильник досягає кінця діапазону Кількість ітерацій відома
Базовий цикл Явний ВИХІД у блоці Вихід керується вручну

Оскільки цикл WHILE перевіряє свою умову на початку, тіло циклу може виконатися нуль разів, якщо умова хибна з самого початку. Це ключова відмінність від базового циклу, тіло якого завжди виконується принаймні один раз.

Уникнення нескінченного циклу While

Цикл WHILE повністю залежить від руху керуючої змінної до умови виходу. Якщо цього не відбувається, цикл виконується вічно, і сеанс зависає. Цьому запобігають три звички:

  • Змінюйте лічильник на кожній ітерації. У цьому прикладі значення рядка 'a' збільшується всередині циклу; видалення цього рядка призведе до нескінченного циклу.
  • Перевірте межу. Переконайтеся, що умова може стати хибною для початкового значення, а не лише для ідеального випадку.
  • Додайте безпечний ВИХІД КОЛИ. Для циклу, керованого даними, EXIT WHEN при максимальній кількості ітерацій діє як захист від неочікуваного значення.

Коли кількість повторень дійсно фіксована, цикл FOR повністю усуває ризик, оскільки його лічильник керується автоматично.

Поширені запитання

Так. Оскільки умова перевіряється перед блоком, якщо вона хибна на початку, тіло циклу ніколи не виконується. Ця перевірка запису є основною відмінністю від базового циклу, який завжди виконується один раз.

Переконайтеся, що змінна всередині циклу змінюється в бік умови виходу на кожній ітерації. Додавання EXIT WHEN для максимальної кількості є корисною запобіжною мережею для циклів, керованих даними.

Використовуйте WHILE, коли кількість ітерацій невідома та залежить від умови. Використовуйте FOR, коли ви перебираєте фіксований діапазон, оскільки його лічильник керується автоматично.

Часто. Штучний інтелект може перевірити, чи рухається керуюча змінна до умови виходу, і попередити, коли це не так. Цикл, вихід якого залежить від даних у реальному часі, все одно потребує перевірки, щоб переконатися в цьому.

Так. Хоча цикл WHILE завершується, коли його верхня умова стає хибною, EXIT або EXIT WHEN всередині тіла циклу можуть завершити його раніше, що зручно для виходу з циклу в особливому випадку.

Підсумуйте цей пост за допомогою: