Вступ до викладу справи в 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 є обов'язковою частиною справи.

Схема потоку

Як працює випадок справи в PL / SQL?

Хоча заява CASE, представлена ​​в Oracle 9i, вона широко застосовується в інших мовах програмування. Як і інші мови програмування, оператор CASE працює аналогічно.

Oracle 9i підтримує два типи операторів CASE: простий оператор CASE та пошук оператора CASE

1. Простий випадок справи

У простому операторі оператора оператор виконується, якщо значення виразу збігається із заявленою умовою. Ці умови заявки заздалегідь визначені під час написання оператора 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, інакше середній.

Вище написаний запит дасть нижченаведені результати

Співробітник_Name CASECR

------–--

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

Нольте середній

Лорен Середній

Gueney High

2. Шукана заява про справу

Шуканий оператор 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 слід викликати, яка приймає в якості параметрів найменший_обіг та суму бонусу.

У наведеному вище прикладі ми визначили різні діапазони зарплат, і виходячи з того, що функція 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, пошуковий CASE та оператор Nested CASE з прикладом. Ми також дізналися, як можна оптимізувати оператор CASE шляхом правильного впорядкування пункту WHEN.

Рекомендовані статті

Це посібник до оператора CASE в PL / SQL. Тут ми обговорюємо, як працює випадок справи в PL / SQL з прикладами та синтаксисом. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Що таке PL / SQL?
  2. PL / SQL Команди
  3. Використання SQL
  4. Кар'єра в PL / SQL
  5. IF-Else Заява в Матлабі
  6. Петлі в PL / SQL