ELSE в Oracle SQL — как задавать действия по умолчанию

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

ELSE это часть условных конструкций в Oracle SQL и PL/SQL. Он позволяет задать действие по умолчанию, если ни одно из условий не сработало.

Используется в:

  • операторе CASE в SQL-запросах

  • управляющих конструкциях IF...THEN...ELSE в PL/SQL

  • обработке исключений и условий по умолчанию

Без ELSE запросы могут возвращать NULL, если не найдено соответствия, а PL/SQL-блок может ничего не выполнить — что не всегда желательно.


🔤 Написание

В SQL:

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

В PL/SQL:

plsql
IF условие THEN
-- действие
ELSE
-- действие по умолчанию
END IF;

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

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

  • Перевод статусов в текст

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

  • Логика по умолчанию в бизнес-правилах

  • Страховка от NULL-ов и пустых результатов


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

1️⃣ CASE в SELECT

sql
SELECT employee_name,
CASE department_id
WHEN 10 THEN 'Бухгалтерия'
WHEN 20 THEN 'IT'
ELSE 'Другое'
END AS отдел
FROM employees;

2️⃣ ELSE с числовыми диапазонами

sql
SELECT product_name,
CASE
WHEN price < 100 THEN 'Дешево'
WHEN price BETWEEN 100 AND 500 THEN 'Средне'
ELSE 'Дорого'
END AS категория
FROM products;

3️⃣ PL/SQL IF с ELSE

plsql
BEGIN
IF score >= 90 THEN
DBMS_OUTPUT.PUT_LINE('Отлично');
ELSE
DBMS_OUTPUT.PUT_LINE('Попробуй ещё');
END IF;
END;

4️⃣ ELSE как «страховка» от NULL

sql
SELECT user_id,
CASE WHEN status IS NULL THEN 'неизвестно'
ELSE status
END AS проверенный_статус
FROM users;

5️⃣ Вложенный CASE

sql
SELECT CASE
WHEN age < 18 THEN 'Несовершеннолетний'
WHEN age BETWEEN 18 AND 65 THEN 'Взрослый'
ELSE 'Пенсионер'
END AS категория
FROM people;

6️⃣ ELSE в UPDATE

sql
UPDATE orders
SET priority = CASE
WHEN amount > 10000 THEN 'Высокий'
ELSE 'Обычный'
END;

7️⃣ PL/SQL ELSE IF

plsql
IF temp > 30 THEN
DBMS_OUTPUT.PUT_LINE('Жарко');
ELSIF temp >= 15 THEN
DBMS_OUTPUT.PUT_LINE('Тепло');
ELSE
DBMS_OUTPUT.PUT_LINE('Холодно');
END IF;

8️⃣ CASE внутри функции

sql
SELECT NVL2(status, status, 'ELSE') AS статус
FROM orders;

9️⃣ CASE в агрегатных выражениях

sql
SELECT
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS total_completed
FROM orders;

🔟 Использование ELSE в представлении

sql
CREATE VIEW order_labels AS
SELECT order_id,
CASE
WHEN amount >= 500 THEN 'Крупный заказ'
ELSE 'Обычный'
END AS метка
FROM orders;

🧩 Заключение

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

💡 Запомни:

  • ELSE в CASE защищает от NULL и неопределённых веток

  • В PL/SQL помогает обрабатывать альтернативные действия

  • Хороший тон — всегда указывать ELSE, особенно в отчётах


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

EACH в Oracle SQL — зачем он нужен и почему может сбивать с толку


 

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