IF в PL/SQL — как выполнять условную логику

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

Хотите, чтобы код выполнялся только при определённых условиях? Для этого существует управляющая конструкция IF в PL/SQL. Она используется для проверки условий и ветвления логики в процедурах, функциях, блоках BEGIN…END и триггерах.

Конструкция IF — это аналог условного оператора во всех популярных языках программирования.


🔤 Написание

plsql
IF условие THEN
-- действия
[ELSIF другое_условие THEN
-- другие действия]
[ELSE
-- действия по умолчанию]
END IF;

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

  • Условная логика в процедурах и функциях

  • Валидация входных данных

  • Обработка ошибок

  • Разветвление выполнения

  • Внутри триггеров, циклов и анонимных блоков


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

1️⃣ Простая проверка

plsql
BEGIN
IF salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('Высокая зарплата');
END IF;
END;

2️⃣ IF с ELSE

plsql
BEGIN
IF salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('Высокая');
ELSE
DBMS_OUTPUT.PUT_LINE('Низкая');
END IF;
END;

3️⃣ IF с ELSIF

plsql
BEGIN
IF salary > 8000 THEN
DBMS_OUTPUT.PUT_LINE('Очень высокая');
ELSIF salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('Средняя');
ELSE
DBMS_OUTPUT.PUT_LINE('Низкая');
END IF;
END;

4️⃣ IF в функции

plsql
CREATE OR REPLACE FUNCTION is_adult(age NUMBER)
RETURN VARCHAR2 IS
BEGIN
IF age >= 18 THEN
RETURN 'Совершеннолетний';
ELSE
RETURN 'Несовершеннолетний';
END IF;
END;

5️⃣ IF в процедуре

plsql
CREATE OR REPLACE PROCEDURE check_stock(p_qty NUMBER) IS
BEGIN
IF p_qty <= 0 THEN
DBMS_OUTPUT.PUT_LINE('Нет в наличии');
ELSE
DBMS_OUTPUT.PUT_LINE('Товар доступен');
END IF;
END;

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

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

7️⃣ Комбинация условий

plsql
IF salary > 5000 AND department_id = 10 THEN
-- действия
END IF;

8️⃣ Вложенные IF

plsql
IF status = 'A' THEN
IF is_verified = 'Y' THEN
DBMS_OUTPUT.PUT_LINE('Готов к запуску');
END IF;
END IF;

9️⃣ Использование NOT

plsql
IF NOT active THEN
DBMS_OUTPUT.PUT_LINE('Неактивный');
END IF;

🔟 IF в триггере

plsql
CREATE OR REPLACE TRIGGER trg_check_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
IF :NEW.email IS NULL THEN
RAISE_APPLICATION_ERROR(-20001, 'Email обязателен');
END IF;
END;

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

Оператор IF — это основа логического управления в Oracle PL/SQL. Он делает код умным, гибким и подстраиваемым под множество условий.

💡 Запомни:

  • IF работает только в PL/SQL, не в SQL

  • Поддерживает ELSIF и ELSE

  • Может быть вложенным

  • Идеален для проверок и сценариев в процедурах и функциях


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

HAVING в Oracle SQL — как фильтровать группы после агрегации»


 

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