LOOP в PL/SQL — как создавать циклы и повторять действия в PL/SQL

🟢 LOOP в PL/SQL. Введение

В PL/SQL, помимо условий и операторов, можно использовать циклы, которые позволяют повторять действия до тех пор, пока выполняется определённое условие. Оператор LOOP — это один из базовых способов организации повторений в PL/SQL.

Oracle поддерживает три типа циклов:

  • LOOP — базовый бесконечный цикл

  • WHILE LOOP — с предусловием

  • FOR LOOP — с заданным диапазоном


🔤 Написание

Простой синтаксис LOOP:

plsql
LOOP
-- действия
EXIT WHEN условие;
END LOOP;

🔄 Где используется

  • Повторение операций над строками

  • Работа с курсорами

  • Проверка условий во время выполнения

  • Пошаговая обработка данных

  • Циклы с явным управлением выходом (EXIT)


🧪 10 Примеров использования LOOP

1️⃣ Простой бесконечный цикл с выходом

plsql
DECLARE
i NUMBER := 1;
BEGIN
LOOP
EXIT WHEN i > 5;
DBMS_OUTPUT.PUT_LINE('Шаг ' || i);
i := i + 1;
END LOOP;
END;

2️⃣ WHILE LOOP

plsql
DECLARE
i NUMBER := 1;
BEGIN
WHILE i <= 5 LOOP
DBMS_OUTPUT.PUT_LINE('WHILE шаг ' || i);
i := i + 1;
END LOOP;
END;

3️⃣ FOR LOOP с диапазоном

plsql
BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('FOR шаг ' || i);
END LOOP;
END;

4️⃣ REVERSE FOR LOOP (обратный порядок)

plsql
BEGIN
FOR i IN REVERSE 1..3 LOOP
DBMS_OUTPUT.PUT_LINE('Назад: ' || i);
END LOOP;
END;

5️⃣ Выход из цикла с IF внутри

plsql
BEGIN
FOR i IN 1..10 LOOP
IF i = 4 THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE('i = ' || i);
END LOOP;
END;

6️⃣ CONTINUE внутри цикла

plsql
BEGIN
FOR i IN 1..5 LOOP
IF i = 3 THEN
CONTINUE;
END IF;
DBMS_OUTPUT.PUT_LINE('i = ' || i);
END LOOP;
END;

7️⃣ LOOP с обработкой данных

plsql
DECLARE
v_salary NUMBER := 1000;
BEGIN
LOOP
v_salary := v_salary * 1.1;
EXIT WHEN v_salary > 1500;
DBMS_OUTPUT.PUT_LINE('Зарплата: ' || v_salary);
END LOOP;
END;

8️⃣ Обработка массива с FOR LOOP

plsql
DECLARE
TYPE id_list IS VARRAY(3) OF NUMBER;
ids id_list := id_list(101, 102, 103);
BEGIN
FOR i IN 1..ids.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('ID: ' || ids(i));
END LOOP;
END;

9️⃣ Цикл с вложенным условием

plsql
BEGIN
FOR i IN 1..5 LOOP
IF MOD(i, 2) = 0 THEN
DBMS_OUTPUT.PUT_LINE(i || ' — чётное');
END IF;
END LOOP;
END;

🔟 WHILE LOOP с флагом выхода

plsql
DECLARE
done BOOLEAN := FALSE;
i NUMBER := 0;
BEGIN
WHILE NOT done LOOP
i := i + 1;
DBMS_OUTPUT.PUT_LINE(i);
IF i >= 3 THEN
done := TRUE;
END IF;
END LOOP;
END;

🧩 Заключение

Оператор LOOP и его вариации (WHILE, FOR) — основа циклической логики в PL/SQL. Они позволяют выполнять действия многократно, управлять выходами и гибко реагировать на условия.

💡 Запомни:

  • LOOP — требует EXIT для выхода

  • WHILE LOOP — проверяет условие перед итерацией

  • FOR LOOP — работает по диапазону значений

  • Используй CONTINUE и EXIT для контроля потока


🔜 Следующая статья:

KEY в Oracle SQL — как создавать связи между таблицами


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии