Въведение в декларация за случай в 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

------–--

Богарт Лоу

Nolte Medium

Лорен Среден

Gueney High

2. Търсена декларация по случая

Търсеният оператор CASE е малко по-различен от простия оператор CASE. В изявлението за търсения случай вместо предварително дефинирано условие можете да напишете условие, което ще бъде оценено по време на изпълнение.

нека да разгледаме синтаксиса на търсения 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 трябва да се обади, което взема като параметър служител_id и сума бонус.

В горния пример сме дефинирали различни диапазони на заплатите и въз основа на тази функция AllocateBonus ще бъде извикана, ако заплатата падне в определения диапазон.

Забележка : При всяка итерация, един и само един оператор ще се изпълни, въпреки че множеството оператори отговарят на критериите. Когато клаузите винаги се оценяват по ред от горе до долу.

Съвети

Тъй като клаузата WHEN се оценява в определен ред, т.е. отгоре надолу, би било препоръчително да се изброят клаузите, които е най-вероятно да се появят първо или честотата е повече. В допълнение към клаузата WHEN е скъп, т.е. израз, който изисква много CPU памет трябва да присъства на последно място, за да се намалят до минимум шансовете за изпълнение.

3. Вложено изявление за CASE

Подобно на вложен 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 Statement в Matlab
  6. Цикли в PL / SQL