ELSIF в PL/SQL — как проверять несколько условий

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

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

ELSIF — это аналог else if в других языках программирования и логическое продолжение IF.


🔤 Написание

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

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

  • Присвоение категории на основе значения

  • Обработка разных диапазонов

  • Выбор бизнес-логики по типу действия

  • Проверка нескольких флагов и условий

  • Построение сложной реактивной логики без вложенных IF


🧪 10 Примеров использования ELSIF в PL/SQL

1️⃣ Оценка по баллам

plsql
BEGIN
IF score >= 90 THEN
DBMS_OUTPUT.PUT_LINE('Отлично');
ELSIF score >= 75 THEN
DBMS_OUTPUT.PUT_LINE('Хорошо');
ELSIF score >= 60 THEN
DBMS_OUTPUT.PUT_LINE('Удовлетворительно');
ELSE
DBMS_OUTPUT.PUT_LINE('Неудовлетворительно');
END IF;
END;

2️⃣ Классификация товаров

plsql
IF price > 1000 THEN
category := 'Премиум';
ELSIF price > 500 THEN
category := 'Средний класс';
ELSE
category := 'Бюджет';
END IF;

3️⃣ Проверка состояния заказа

plsql
IF status = 'NEW' THEN
action := 'Ожидание';
ELSIF status = 'SHIPPED' THEN
action := 'В пути';
ELSIF status = 'DELIVERED' THEN
action := 'Доставлено';
ELSE
action := 'Неизвестно';
END IF;

4️⃣ Логика на основе даты

plsql
IF hire_date > SYSDATE - 30 THEN
level := 'Новичок';
ELSIF hire_date > SYSDATE - 365 THEN
level := 'Опытный';
ELSE
level := 'Ветеран';
END IF;

5️⃣ Реакция на тип документа

plsql
IF doc_type = 'INVOICE' THEN
action := 'К оплате';
ELSIF doc_type = 'CONTRACT' THEN
action := 'Подписание';
ELSIF doc_type = 'REPORT' THEN
action := 'Чтение';
ELSE
action := 'Архив';
END IF;

6️⃣ Выбор тарифного плана

plsql
IF traffic < 5 THEN
plan := 'Mini';
ELSIF traffic < 20 THEN
plan := 'Standard';
ELSIF traffic < 50 THEN
plan := 'Pro';
ELSE
plan := 'Unlimited';
END IF;

7️⃣ Обработка ошибок с разными кодами

plsql
IF error_code = 100 THEN
msg := 'Не найдено';
ELSIF error_code = 200 THEN
msg := 'Доступ запрещён';
ELSE
msg := 'Неизвестная ошибка';
END IF;

8️⃣ Сравнение чисел с ELSIF в PL/SQL

plsql
IF a > b THEN
result := 'A больше';
ELSIF a < b THEN
result := 'B больше';
ELSE
result := 'Равны';
END IF;

9️⃣ Решение на основе пользовательского ввода

plsql
IF user_input = 'Да' THEN
flag := 1;
ELSIF user_input = 'Нет' THEN
flag := 0;
ELSE
flag := NULL;
END IF;

🔟 Вложенный ELSIF внутри цикла

plsql
FOR i IN 1..10 LOOP
IF MOD(i, 3) = 0 THEN
DBMS_OUTPUT.PUT_LINE(i || ' делится на 3');
ELSIF MOD(i, 2) = 0 THEN
DBMS_OUTPUT.PUT_LINE(i || ' чётное');
ELSE
DBMS_OUTPUT.PUT_LINE(i || ' нечётное');
END IF;
END LOOP;

🧩 Заключение

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

💡 Запомни:

  • Используется только после IF, и до ELSE

  • Позволяет избежать вложенности

  • Можно комбинировать несколько условий

  • Последовательность условий имеет значение


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

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


 

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