Úvod do Case Case v PL / SQL

Příkaz CASE v PL / SQL je podobný podmínce IF-ELSEIF, kde jsou v bloku uvedeny různé podmínky a pouze ty příkazy jsou provedeny, pro které splňuje podmínku. Příkaz CASE odpovídá hodnotě výrazu namísto booleovského výrazu. Výraz může být jakéhokoli datového typu a ve výpisech musí být použit stejný datový typ. Každý příkaz má předdefinovanou hodnotu a pokud se tato hodnota shoduje s hodnotami předanými ve výrazu selektoru, bude tento konkrétní příkaz proveden. V tomto tématu se budeme učit o příkazu CASE v PL / SQL.

Syntax

Teď, když jste pochopili, co je příkaz CASE v PL / SQL, pojďme se podívat na syntaxi příkazu CASE.

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

Vysvětlení kódu

Ve výše uvedené syntaxi výraz vrátí hodnotu libovolného datového typu, všechny příkazy budou mít předdefinovanou jedinečnou hodnotu, výraz CASE projde všemi příkazy, dokud nedosáhne přesné shody definované v hodnotovém výrazu, v tomto případě, Value_1, Value_2 a Value_3. Pokud výraz Case nenalezl shodu ve výpisu, provede se výchozí příkaz.

Nezapomeňte, že blok ELSE je volitelný a pokud nechcete, aby se provedl jakýkoli výchozí příkaz, můžete tento příkaz přeskočit. Případ END je povinnou součástí případu.

Vývojový diagram

Jak funguje Case Case v PL / SQL?

Ačkoli prohlášení CASE zavedené v Oracle 9i, bylo široce používáno v jiných programovacích jazycích. Podobně jako jiné programovací jazyky, i CASE pracuje.

Oracle 9i podporuje dva typy CASE příkazů jednoduché CASE prohlášení a prohledávané CASE prohlášení

1. Jednoduché prohlášení o případu

V jednoduchém příkazu case se příkaz provede, pokud hodnota výrazu odpovídá uvedené podmínce. Tyto podmínky příkazu jsou při psaní příkazu CASE předdefinovány. Jakmile kompilátor najde shodu, rozbije se a vyjde ze smyčky po provedení příkazu, čímž se vyhne dalšímu zbytečnému vyhodnocení výrazu. Pokud kompilátor nenalezl žádnou shodu, provede příkaz výchozího případu. Výchozí případ není povinný a lze jej přeskočit.

Syntax

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Vysvětlení

Jak bylo uvedeno výše, případ ELSE je volitelný. Kompilátor nejprve vyhodnotí výraz CASE a poté porovná výraz s první podmínkou. Pokud se podmínka shoduje s výrazem 1, dojde k jejímu provedení, jinak se kontroluje podmínka 2 a tak dále.

Podívejme se na nějaký příklad v reálném čase, aby byl koncept jasnější

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

Předpokládejme, že existuje revizní tabulka, která obsahuje podrobnosti zpětné vazby na konci roku a vy musíte uvést jméno zaměstnance a hodnocení. Ale místo čísel, které chcete zobrazit Nízké hodnocení je 1, Vysoké hodnocení je 3 jinak střední.

Výše uvedený dotaz bude mít níže uvedené výsledky

Employee_Name CASECR

---------

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Hledané CASE prohlášení

Hledaný výraz CASE se mírně liší od jednoduchého příkazu CASE. V příkazu Prohledávaný případ místo předdefinované podmínky můžete napsat podmínku, která bude vyhodnocena v době spuštění.

pojďme se podívat na syntaxi příkazu prohledávaného CASE s tímto příkladem

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;

Předpokládejme, že požadavkem je přidělit odměny zaměstnanci na základě jeho současného platového rozpětí. Pokud zaměstnanec spadá do určitých kritérií, měla by se zavolat funkce AllocateBonus, která jako parametry bere zaměstnanec_id a částku bonusu.

Ve výše uvedeném příkladu jsme definovali různá rozmezí platů a na základě této funkce se funkce AllocateBonus nazývá, pokud plat spadá do zadaného rozsahu.

Poznámka : V každé iteraci bude proveden jeden a pouze jeden příkaz, i když více příkazů splňuje kritéria. Když se klauzule vždy vyhodnocují v pořadí shora dolů.

Tipy

Protože se klauzule WHEN vyhodnocuje v určitém pořadí, tj. Shora dolů, doporučuje se vyjmenovat klauzule, která se s největší pravděpodobností vyskytnou jako první, nebo je frekvence častější. Kromě kterékoli klauzule WHEN je nákladný, tj. Výraz, který vyžaduje hodně paměti CPU, by měl být přítomen konečně, aby se minimalizovala šance na spuštění.

3. Vnořené prohlášení CASE

Podobně jako vnořený příkaz IF-ELSE lze vnořit i příkaz CASE. Syntaxe zůstává stejná, jen když vnější podmínka splňuje kritéria, prochází opět řadou příkazů. Pojďme improvizovat výše uvedený příklad CASE, abychom pochopili, jak funguje příkaz Vnořený 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;

Vysvětlení

Jak vidíte, syntaxe zůstává stejná pouze v případě, že podmínka splňuje, prochází znovu příkazem CASE, aby konečně provedla funkci přidělení.

Závěr - Příkaz CASE v PL / SQL

Nyní, když jsme dosáhli konce článku, shrneme klíčové body, které jsme v tomto článku diskutovali. Viděli jsme, co je příkaz CASE v PL / SQL, naučili jsme se základní syntaxi s příkladem. Příkladem jsme diskutovali různé typy příkazu CASE, tj. Jednoduché CASE, Searched CASE a Nested CASE. Také jsme se naučili, jak můžeme optimalizovat prohlášení CASE správným uspořádáním klauzule WHEN.

Doporučené články

Toto je průvodce příkazem CASE v PL / SQL. Zde diskutujeme o tom, jak funguje Case Case v PL / SQL s příklady a syntaxí. Další informace naleznete také v následujících článcích -

  1. Co je PL / SQL?
  2. Příkazy PL / SQL
  3. Použití SQL
  4. Kariéra v PL / SQL
  5. IF-Else prohlášení v Matlabu
  6. Smyčky v PL / SQL