FOR в PL/SQL — как управлять циклами и итерациями

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

Хотите перебрать все строки из таблицы или повторить действие 10 раз? Это легко реализуется с помощью цикла FOR в PL/SQL. Он помогает выполнять действия многократно, управляя переменной-счётчиком или итерируясь по курсору.

FOR — это базовая конструкция в языке программирования PL/SQL, аналогичная другим языкам (например, Python, JavaScript, C).


🔤 Написание

1. Числовой цикл FOR

plsql
FOR i IN 1..10 LOOP
-- действия
END LOOP;

2. FOR по курсору

plsql
FOR rec IN (SELECT * FROM employees) LOOP
-- действия с rec
END LOOP;

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

  • Повторение операций с фиксированным числом шагов

  • Перебор строк из SELECT-запроса

  • Обновление или обработка всех записей

  • Генерация отчётов

  • Заполнение временных таблиц


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

1️⃣ Простой цикл от 1 до 5

plsql
BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('Итерация: ' || i);
END LOOP;
END;

2️⃣ Цикл в обратную сторону

plsql
BEGIN
FOR i IN REVERSE 5..1 LOOP
DBMS_OUTPUT.PUT_LINE('Идём назад: ' || i);
END LOOP;
END;

3️⃣ Цикл по результату запроса

plsql
BEGIN
FOR emp IN (SELECT first_name, salary FROM employees) LOOP
DBMS_OUTPUT.PUT_LINE(emp.first_name || ': ' || emp.salary);
END LOOP;
END;

4️⃣ Обновление строк в цикле

plsql
BEGIN
FOR e IN (SELECT employee_id FROM employees WHERE salary < 3000) LOOP
UPDATE employees SET salary = salary + 500 WHERE employee_id = e.employee_id;
END LOOP;
END;

5️⃣ Заполнение временной таблицы

plsql
BEGIN
FOR i IN 1..100 LOOP
INSERT INTO temp_data(id, created_at) VALUES (i, SYSDATE);
END LOOP;
END;

6️⃣ Работа с вложенными циклами

plsql
BEGIN
FOR i IN 1..3 LOOP
FOR j IN 1..2 LOOP
DBMS_OUTPUT.PUT_LINE('i=' || i || ', j=' || j);
END LOOP;
END LOOP;
END;

7️⃣ Использование переменной вне цикла нельзя

plsql
-- переменная i недоступна после END LOOP

8️⃣ FOR с фильтрацией данных

plsql
BEGIN
FOR r IN (SELECT * FROM orders WHERE status = 'NEW') LOOP
-- обработка новых заказов
END LOOP;
END;

9️⃣ Формирование строкового отчёта

plsql
DECLARE
summary VARCHAR2(1000) := '';
BEGIN
FOR i IN 1..3 LOOP
summary := summary || i || ', ';
END LOOP;
DBMS_OUTPUT.PUT_LINE(summary);
END;

🔟 Логика с EXIT внутри FOR

plsql
BEGIN
FOR i IN 1..10 LOOP
EXIT WHEN i = 5;
DBMS_OUTPUT.PUT_LINE('До выхода: ' || i);
END LOOP;
END;

🧩 FOR в PL/SQL. Заключение

FOR — один из самых часто используемых операторов в PL/SQL. Он прост, читаем и мощен. Подходит для большинства задач, связанных с повторением, обходом строк и итерацией по диапазонам.

💡 Запомни:

  • FOR бывает числовой и курсорный

  • Переменная цикла создаётся автоматически

  • Подходит для любых циклических действий

  • Удобен при работе с SELECT, INSERT, UPDATE


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

FLOAT в Oracle SQL — как работать с числами с плавающей точкой


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