Докато Loop in Oracle PL/SQL с пример
⚡ Умно обобщение
Oracle PL/SQL WHILE цикълът повтаря блок от код, докато дадено условие остава истина. Това е цикъл за проверка на входни данни, който тества условието за изход преди всяка итерация, така че блокът може да се изпълни нула пъти и не е необходима изрична ключова дума EXIT.

Какво е PL/SQL While цикъл?
- Докато Loop В PL/SQL работи подобно на основния цикъл, с изключение на това, че условието за изход е в самото начало на цикъла. Работи като цикъл за проверка на влизания, където блокът за изпълнение се изпълнява само ако условието е изпълнено, защото условието за изход се проверява преди изпълнението.
Не изисква изрично ключовата дума „EXIT“ за излизане от цикъла, тъй като валидира условието имплицитно всеки път.
Синтаксис на цикъла на PL/SQL
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Ключовата дума „WHILE“ маркира началото на цикъла, а „END LOOP“ – края му.
- Условието за изход се оценява всеки път, преди изпълнението на частта за изпълнение да започне.
- Блокът за изпълнение съдържа целия код, който трябва да се изпълни.
- Изпълнителната част може да съдържа произволен изпълним оператор.
Пример за Oracle PL/SQL цикъл докато
В този пример отпечатваме числа от 1 до 5, използвайки цикъл WHILE.

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 цикъл | Броячът достига края на диапазона | Броят на итерациите е известен |
| Основен цикъл | Изричен EXIT в блока | Изходът се управлява ръчно |
Тъй като цикълът WHILE проверява условието си в началото, тялото може да се изпълни нула пъти, ако условието е невярно от самото начало. Това е ключовата разлика от обикновен цикъл, чието тяло винаги се изпълнява поне веднъж.
Избягване на безкраен While цикъл
Цикъл WHILE зависи изцяло от движението на управляващата променлива към условието за изход. Ако това никога не се случи, цикълът се изпълнява безкрайно и сесията замръзва. Три навика предотвратяват това:
- Променяйте брояча на всяка итерация. Примерът увеличава 'a' вътре в цикъла; премахването на този ред би довело до безкраен цикъл.
- Тествайте границата. Потвърдете, че условието може действително да стане невярно за началната стойност, не само за идеален случай.
- Добавете безопасен ИЗХОД КОГАТО. За цикъл, управляван от данни, EXIT WHEN при максимален брой итерации действа като защита срещу неочаквана стойност.
Когато броят на повторенията е наистина фиксиран, FOR цикълът елиминира риска изцяло, защото броячът му се управлява автоматично.
