Вступ до викладу справи в 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 з прикладами та синтаксисом. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Що таке PL / SQL?
- PL / SQL Команди
- Використання SQL
- Кар'єра в PL / SQL
- IF-Else Заява в Матлабі
- Петлі в PL / SQL