Introduktion till ärendeanmälan i PL / SQL

CASE-uttalandet i PL / SQL liknar IF-ELSEIF-villkoret där olika villkor är listade i ett block och bara att uttalanden körs för vilka det uppfyller villkoret. CASE-uttalande matchar uttrycksvärdet i stället för ett booleskt uttryck. Uttrycket kan vara av vilken datatyp som helst och samma datatyp måste användas i uttalandena. Varje uttalande har ett fördefinierat värde och om det värdet överensstämmer med de värden som skickas i väljaruttrycket körs det specifika uttalet. I det här ämnet kommer vi att lära oss om CASE-uttalandet i PL / SQL.

Syntax

Nu när du har fått en viktig del av vad ett CASE-uttalande i PL / SQL är, låt oss titta på syntaxen i CASE-uttalandet.

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

Kodförklaring

I syntaxen ovan kommer uttrycket att returnera ett värde av vilken datatyp som helst, alla uttalanden har ett fördefinierat unikt värde, CASE-uttrycket kommer att gå igenom alla påståenden tills det får den exakta matchningen som definieras i värdesuttrycket, i detta fall, Value_1, Value_2 och Value_3. Om sakuttrycket inte hittade matchningen i uttalandet kommer standardförklaringen att köras.

Observera att ELSE-blocket är valfritt och om du inte vill att något standarduttalande ska köras kan du hoppa över detta uttalande. END-ärendet är en obligatorisk del av ärendet.

Flödesdiagram

Hur fungerar ärendeklarationen i PL / SQL?

Även om CASE-uttalandet som introducerades i Oracle 9i har det använts ofta på de andra programmeringsspråken. Liksom andra programmeringsspråk fungerar CASE-uttalandet på liknande sätt.

Oracle 9i stöder två typer av CASE-uttalanden enkelt CASE-uttalande och sökte CASE-uttalande

1. Enkelt ärendeuttalande

I det enkla ärendeutförandet körs ett uttalande om uttrycksvärdet matchar det angivna villkoret. Dessa uttalandevillkor är fördefinierade när du skriver CASE-uttalandet. När kompilatorn hittat en matchning bryts den och kommer ut ur slingan efter att ha gjort uttalandet och undviker ytterligare onödig uttryck utvärdering. Om kompilatorn inte hittade någon matchning kommer den att utföra uttalandet om standardfallet. Standardfallet är inte obligatoriskt och kan hoppas över.

Syntax

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Förklaring

Som nämnts tidigare är ELSE-fallet frivilligt. Kompilatorn utvärderar först CASE-uttrycket och jämför sedan uttrycket med det första villkoret. Om villkoret överensstämmer med uttrycket uttalande 1 kommer att köras annars kontrolleras villkor 2 och så vidare.

Låt oss se några realtidsexempel för att förstå konceptet tydligare

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

Låt oss anta att det finns en granskningstabell som har anställdas återkopplingsdetaljer och du måste visa anställdens namn och betyg. Men istället för siffror du vill visa Lågt på betyget är 1, är Hög av betyget 3 annars medium.

Frågan skriven ovan ger resultat nedan

Employee_Name CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Sökt CASE-uttalande

Det sökta CASE-uttalandet är något annorlunda än det enkla CASE-uttalandet. I den sökta ärendeuppgiften istället för ett fördefinierat tillstånd kan du skriva ett villkor som kommer att utvärderas vid körningstiden.

låt oss ta en titt på syntaxen för sökat CASE-uttalande med det här exemplet

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;

Antag att kravet är att fördela bonusar till en anställd baserat på hans / hennes nuvarande lönegrad. Om en anställd faller inom vissa kriterier bör AllocateBonus-funktionen ringas som tar medarbetarid och beloppsbonus som parametrar.

I exemplet ovan har vi definierat olika lönsområden och baserat på att AllocateBonus-funktionen kommer att ringas om lönen faller inom det angivna intervallet.

Obs : I varje iteration kommer en och endast en sats att köras även om flera påståenden uppfyller kriterierna. När klausuler alltid utvärderas i ordning från topp till botten.

tips

Eftersom WHEN-klausulen utvärderas i en viss ordning, dvs. från topp till botten, skulle det rekommenderas att lista ned de klausuler som mest troligt kommer att inträffa först eller frekvensen är mer. Utöver den för vilken WHEN-klausul som helst är ett dyrt, dvs uttryck som kräver mycket CPU-minne bör vara närvarande till sist för att minimera chansen att bli körda.

3. Nested CASE-uttalande

Precis som det kapslade IF-ELSE-uttalandet, kan CASE-uttalandet också kapslas. Syntaxen förblir densamma precis som när det yttre villkoret uppfyller kriterierna igen går igenom en serie uttalanden. Låt oss improvisera ovanstående sökte CASE-exempel för att förstå hur Nested CASE-uttalandet fungerar.

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;

Förklaring

Som du ser förblir syntaxen densamma precis som när villkoret uppfyller det igen igenom ett CASE-uttalande för att slutligen köra allokeringsfunktionen.

Slutsats - CASE-uttalande i PL / SQL

Nu när vi har kommit till slutet av artikeln, låt oss sammanfatta de viktigaste punkterna som vi har diskuterat i den här artikeln. Vi har sett vad ett CASE-uttalande i PL / SQL är, lärt oss den grundläggande syntaxen med ett exempel. Vi har diskuterat de olika typerna av CASE-uttalanden, dvs enkelt CASE, Searched CASE och Nested CASE-uttalandet med ett exempel. Vi har också lärt oss hur vi kan optimera CASE-uttalandet genom rätt beställning av WHEN-klausulen.

Rekommenderade artiklar

Detta är en guide till CASE-uttalandet i PL / SQL. Här diskuterar vi att hur fungerar fallet i PL / SQL med exemplen och syntax. Du kan också titta på följande artiklar för att lära dig mer -

  1. Vad är PL / SQL?
  2. PL / SQL-kommandon
  3. Användning av SQL
  4. Karriärer inom PL / SQL
  5. IF-Else-uttalande i Matlab
  6. Loops i PL / SQL