Введение в Case Case в PL / SQL

Оператор CASE в PL / SQL аналогичен условию IF-ELSEIF, когда в блоке перечислены разные условия и выполняются только те операторы, для которых оно удовлетворяет условию. Оператор CASE соответствует значению выражения вместо логического выражения. Выражение может иметь любой тип данных, и в выражениях должен использоваться один и тот же тип данных. Каждый оператор имеет предопределенное значение, и если это значение совпадает со значениями, переданными в выражении селектора, то этот конкретный оператор выполняется. В этой теме мы собираемся узнать об операторе CASE в PL / SQL.

Синтаксис

Теперь, когда вы получили представление о том, что такое оператор CASE в PL / SQL, давайте посмотрим на синтаксис оператора CASE.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Код Объяснение

В приведенном выше синтаксисе выражение будет возвращать значение любого типа данных, все операторы будут иметь предварительно определенное уникальное значение, выражение CASE будет проходить через все операторы, пока не получит точное совпадение, определенное в выражении значения, в этом случае, Value_1, Value_2 и Value_3. Если выражение Case не нашло совпадения в выражении, то будет выполнено выражение по умолчанию.

Обратите внимание, что блок ELSE является необязательным, и если вы не хотите, чтобы выполнялся какой-либо оператор по умолчанию, вы можете пропустить этот оператор. Дело END является обязательной частью дела.

Диаграмма потока

Как работает Case Case в PL / SQL?

Несмотря на то, что оператор CASE введен в Oracle 9i, он широко используется в других языках программирования. Как и другие языки программирования, оператор CASE работает аналогичным образом.

Oracle 9i поддерживает два типа операторов CASE: простой оператор CASE и искомый оператор CASE

1. Простое описание ситуации

В простом операторе case оператор выполняется, если значение выражения совпадает с указанным условием. Эти условия оператора предопределены при написании оператора CASE. Как только компилятор находит совпадение, он прерывается и выходит из цикла после выполнения оператора, избегая дальнейшей ненужной оценки выражения. Если компилятор не нашел соответствия, он выполнит оператор случая по умолчанию. Случай по умолчанию не является обязательным и может быть пропущен.

Синтаксис

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

объяснение

Как упоминалось ранее, случай ELSE является необязательным. Компилятор сначала оценивает выражение CASE, затем сравнивает выражение с первым условием. Если условие совпадает с выражением, оператор 1 будет выполнен, иначе условие 2 будет проверено и так далее.

Давайте посмотрим на пример в реальном времени, чтобы понять концепцию более четко

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Предположим, что есть таблица отзывов, в которой есть подробности обратной связи с сотрудниками на конец года, и вам нужно показать имя сотрудника и рейтинги. Но вместо цифр, которые вы хотите показать, Низкий рейтинг равен 1, Высокий рейтинг равен 3, в противном случае средний.

Запрос, написанный выше, даст следующие результаты

Employee_Name CASECR

------– --

Богарт Низкий

Nolte Medium

Лорен Медиум

Гени Хай

2. Искал CASE Заявление

Искомый оператор CASE немного отличается от простого оператора CASE. В искомом регистре вместо предопределенного условия вы можете написать условие, которое будет оцениваться во время выполнения.

давайте посмотрим на синтаксис оператора Searched CASE с этим примером

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

Предположим, что требование состоит в том, чтобы назначать бонусы работнику на основании его / ее текущего диапазона заработной платы. Если сотрудник попадает в определенные критерии, должна быть вызвана функция AllocateBonus, которая принимает employee_id и сумму бонуса в качестве параметров.

В приведенном выше примере мы определили разные диапазоны окладов и на основании этого функция AllocateBonus будет вызываться, если оклад попадает в указанный диапазон.

Примечание . На каждой итерации выполняется только один и только один оператор, хотя несколько операторов удовлетворяют критериям. Когда предложения всегда оцениваются в порядке сверху вниз.

подсказки

Поскольку предложение WHEN оценивается в определенном порядке, то есть сверху вниз, было бы рекомендовано перечислить предложения, которые наиболее вероятны в первую очередь или чаще. В дополнение к любому предложению WHEN стоит дорогое выражение, то есть выражение, которое требует много памяти ЦП, должно присутствовать в конце, чтобы минимизировать шансы выполнения.

3. Вложенная выписка по делу

Как и вложенный оператор IF-ELSE, оператор CASE также может быть вложенным. Синтаксис остается тем же самым, только когда внешнее условие удовлетворяет критериям, оно снова проходит серию утверждений. Давайте импровизируем приведенный выше пример CASE, чтобы понять, как работает оператор Nested CASE.

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

объяснение

Как вы видите, синтаксис остается тем же самым, только когда условие удовлетворяет его снова, пройти через оператор CASE, чтобы наконец выполнить функцию Allocate.

Вывод - оператор CASE в PL / SQL

Теперь, когда мы достигли конца статьи, давайте суммируем ключевые моменты, которые мы обсудили в этой статье. Мы увидели, что такое оператор CASE в PL / SQL, изучили базовый синтаксис на примере. Мы обсудили различные типы операторов CASE, например, простой CASE, Searched CASE и Nested CASE, с примером. Мы также узнали, как можно оптимизировать оператор CASE путем правильного упорядочения предложения WHEN.

Рекомендуемые статьи

Это руководство к инструкции CASE в PL / SQL. Здесь мы обсудим, как работает Case Case в PL / SQL с примерами и синтаксисом. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Что такое PL / SQL?
  2. Команды PL / SQL
  3. Использование SQL
  4. Карьера в PL / SQL
  5. IF-Else Заявление в Matlab
  6. Циклы в PL / SQL