Операторы и выражения CASE в PL/SQL

Светлана Комарова

Светлана Комарова

Автор статьи. Системный администратор, Oracle DBA. Информационные технологии, интернет, телеком. Подробнее.

Обзор оператора CASE и выражения в PL/SQLОператор CASE позволяет выбрать для исполнения одну из нескольких последовательностей операторов. Операторы CASE появились в стан­дарте SQL уже в 1992 году, но Oracle SQL стал поддерживать CASE толь­ко в версии Oracle8i Database, а PL/SQL не поддерживал CASE вплоть до версии Oracle9/ Database Release 1. Начиная с этой версии PL/SQL под­держивает следующие виды операторов CASE:

Простой оператор CASE

Ставит в соответствие каждой последовательности операторов PL/ SQL некоторое значение. Выбирает последовательность операторов для выполнения на основе вычисления выражения, возвращающе­го одно из таких значений.

Поисковый оператор CASE

Выбирает последовательность операторов для выполнения на осно­ве вычисления списка логических условий. Выполняется последо­вательность операторов, соответствующая первому условию, вы­численному как TRUE.

В дополнение к операторам CASE PL/SQL поддерживает также выраже­ния CASE. По форме выражение CASE очень похоже на оператор CASE. Оно позволяет выбрать из множества выражений то выражение, которое должно быть вычислено. Результатом выражения CASE является неко­торое значение, в то время как результатом оператора CASE является исполнение последовательности операторов PL/SQL.

 

Простой оператор CASE

Простой оператор CASE позволяет на основе вычисления результатов не­которого выражения выбрать одну из нескольких последовательностей операторов PL/SQL для исполнения. Приведем пример простого опера­тора CASE, в котором для выбора нужного алгоритма вычисления бонуса используется анализ должности сотрудников (переменная employee type):

CASE employee_type WHEN 'S' THEN
   award_salary_bonus(employee_id);
WHEN 'H' THEN
   award_hourly_bonus(employee_id);
WHEN 'C' THEN
   award_commissioned_bonus(employee_id);
ELSE
   RAISE invalid_employee_type;
END CASE;

Рассмотренный оператор CASE содержит явное выражение ELSE, однако в общем случае оно не является обязательным. Если выражение ELSE явно не указано, то PL/SQL неявно использует такую конструкцию:

ELSE
   RAISE CASE_NOT_FOUND;

 

Поисковый оператор CASE

Поисковый оператор CASE вычисляет список логических выражений и, найдя выражение, равное TRUE, выполняет соответствующую ему последовательность операторов. Фактически поисковый оператор CASE эквивалентен оператору CASE TRUE из предыдущего раздела. Приведем пример поискового оператора CASE:

CASE
   WHEN salary >= 10000 AND salary <=20000 THEN 
      give_bonus(employee_id, 1500);
   WHEN salary > 20000 AND salary <= 40000 THEN 
      give_bonus(employee_id, 1000);
   WHEN salary > 40000 THEN
      give_bonus(employee_id, 500);
   ELSE
      give_bonus(employee_id, 0);
END CASE;

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4634 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14738 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Символьные функции и аргументы...
Символьные функции и аргументы... 18546 просмотров Анатолий Wed, 23 May 2018, 18:54:01
Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 12239 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Печать
Войдите чтобы комментировать