THEN в Oracle SQL — как управлять логикой в CASE и IF

🟢THEN в Oracle SQL. Введение

THEN используется в SQL и PL/SQL как часть конструкции, которая указывает, что делать при выполнении определённого условия. Он встречается в двух основных контекстах:

  • В CASE ... WHEN ... THEN ... END внутри SQL-запросов

  • В IF ... THEN ... ELSE ... END IF; внутри PL/SQL-блоков


🔤 Написание

В SQL:

sql
CASE
WHEN условие1 THEN значение1
WHEN условие2 THEN значение2
ELSE значение_по_умолчанию
END

В PL/SQL:

plsql
IF условие THEN
-- действия
ELSIF другое_условие THEN
-- действия
ELSE
-- действия
END IF;

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

  • В SQL для возврата значения по условию

  • В UPDATE запросах для изменения значений

  • В ORDER BY для пользовательской сортировки

  • В PL/SQL для ветвления логики

  • В CASE и IF внутри триггеров, процедур, функций


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

1️⃣ THEN в CASE для вычисления значения

sql
SELECT name,
CASE
WHEN salary > 10000 THEN 'Высокая'
WHEN salary > 5000 THEN 'Средняя'
ELSE 'Низкая'
END AS уровень
FROM employees;

Определение уровня зарплаты.


2️⃣ ФЭН в CASE с логикой расчёта

sql
SELECT id,
CASE
WHEN amount > 1000 THEN amount * 0.1
ELSE 0
END AS bonus
FROM sales;

Расчёт бонуса при достижении порога.


3️⃣ THEN в CASE внутри ORDER BY

sql
SELECT name FROM tasks
ORDER BY
CASE priority
WHEN 'HIGH' THEN 1
WHEN 'MEDIUM' THEN 2
ELSE 3
END;

Кастомная сортировка по важности.


4️⃣ ФЭН в UPDATE через CASE

sql
UPDATE employees
SET bonus = CASE
WHEN performance = 'A' THEN 1000
WHEN performance = 'B' THEN 500
ELSE 0
END;

Обновление значений по условию.


5️⃣ IF … THEN в PL/SQL

plsql
BEGIN
IF SYSDATE = TO_DATE('2025-06-18', 'YYYY-MM-DD') THEN
DBMS_OUTPUT.PUT_LINE('Сегодня важный день!');
END IF;
END;

Условный вывод сообщения.


6️⃣ IF … THEN … ELSE в PL/SQL

pl
IF score >= 90 THEN
grade := 'A';
ELSE
grade := 'B';
END IF;

Простое ветвление логики.


7️⃣ ФЭН с ELSIF

plsql
IF temp > 30 THEN
status := 'Жарко';
ELSIF temp > 20 THEN
status := 'Тепло';
ELSE
status := 'Прохладно';
END IF;

Многоуровневая логика.


8️⃣ ФЭН в функции возврата

plsql
RETURN CASE
WHEN points > 100 THEN 'Gold'
WHEN points > 50 THEN 'Silver'
ELSE 'Bronze'
END;

Условный возврат значения.


9️⃣ CASE с NULL обработкой

sql
SELECT
CASE
WHEN discount IS NULL THEN 'Без скидки'
ELSE 'Скидка есть'
END AS статус
FROM orders;

Проверка пустых значений.


🔟 IF … THEN в триггере

plsql
IF :NEW.status = 'INACTIVE' THEN
:NEW.deactivated_at := SYSDATE;
END IF;

Логика при обновлении строки.


🧩 Заключение

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

💡 Запомни:

  • В CASE возвращает значение при выполнении условия

  • В PL/SQL указывает, какие действия выполнять

  • Используется в SELECT, UPDATE, ORDER BY, функциях и триггерах

  • Повышает читаемость и гибкость кода


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

ON в Oracle SQL — как задавать условия соединения таблиц и правильно использовать JOIN


 

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