Inleiding tot casusverklaring in PL / SQL

De CASE-instructie in PL / SQL is vergelijkbaar met de voorwaarde IF-ELSEIF waarbij verschillende voorwaarden binnen een blok worden vermeld en alleen die instructies worden uitgevoerd waarvoor aan de voorwaarde wordt voldaan. CASE-instructie komt overeen met de expressiewaarde in plaats van een Booleaanse expressie. De uitdrukking kan van elk gegevenstype zijn en hetzelfde gegevenstype moet in de instructies worden gebruikt. Elke instructie heeft een vooraf gedefinieerde waarde en als die waarde overeenkomt met de waarden die zijn doorgegeven in de selector-expressie, wordt die specifieke instructie uitgevoerd. In dit onderwerp gaan we meer te weten komen over de CASE-instructie in PL / SQL.

Syntaxis

Nu u een idee hebt van wat een CASE-instructie in PL / SQL is, gaan we de syntaxis van de CASE-instructie eens bekijken.

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

Code Uitleg

In de bovenstaande syntaxis retourneert de expressie een waarde van elk gegevenstype, alle instructies hebben een vooraf gedefinieerde unieke waarde, de CASE-expressie doorloopt alle instructies totdat het de exacte overeenkomst krijgt die is gedefinieerd in de waarde-expressie, in dit geval, Value_1, Value_2 en Value_3. Als de Case-expressie de overeenkomst niet in de instructie heeft gevonden, wordt de standaardinstructie uitgevoerd.

Merk op dat het ELSE-blok optioneel is en als u niet wilt dat een standaardinstructie wordt uitgevoerd, kunt u deze instructie overslaan. De END-zaak is een verplicht onderdeel van de zaak.

Stroomschema

Hoe werkt de casusverklaring in PL / SQL?

Hoewel de CASE-instructie in Oracle 9i is geïntroduceerd, wordt deze alom in de andere programmeertalen gebruikt. Net als andere programmeertalen werkt de instructie CASE op een vergelijkbare manier.

Oracle 9i ondersteunt twee soorten CASE-instructies: eenvoudige CASE-instructie en gezochte CASE-instructie

1. Eenvoudige casusverklaring

In de eenvoudige case-instructie wordt een instructie uitgevoerd als de expressiewaarde overeenkomt met de opgegeven voorwaarde. Deze voorwaarden zijn vooraf gedefinieerd tijdens het schrijven van de CASE-instructie. Zodra de compiler een overeenkomst vindt, breekt deze en komt deze uit de lus nadat de instructie is uitgevoerd, waardoor verdere evaluatie van onnodige uitdrukkingen wordt vermeden. Als de compiler geen overeenkomst heeft gevonden, wordt de instructie van het standaardgeval uitgevoerd. Het standaardgeval is niet verplicht en kan worden overgeslagen.

Syntaxis

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Uitleg

Zoals eerder vermeld, is het ELSE-geval optioneel. De compiler evalueert eerst de CASE-expressie en vergelijkt vervolgens de expressie met de eerste voorwaarde. Als de voorwaarde overeenkomt met de uitdrukking statement 1, wordt deze uitgevoerd, anders wordt voorwaarde 2 gecontroleerd, enzovoort.

Laten we een realtime voorbeeld bekijken om het concept beter te begrijpen

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

Laten we aannemen dat er een overzichtstabel is met feedbackgegevens voor werknemers aan het einde van het jaar en dat u de naam van de werknemer en de beoordelingen moet tonen. Maar in plaats van cijfers die u wilt weergeven Laag van de beoordeling is 1, Hoog van de beoordeling is 3 anders gemiddeld.

De hierboven geschreven zoekopdracht levert de onderstaande resultaten op

Naam medewerker CASECR

------– --

Bogart Laag

Nolte Medium

Loren Medium

Gueney High

2. Gezocht CASE Statement

De gezochte CASE-instructie is iets anders dan de eenvoudige CASE-instructie. In de Searched Case Statement in plaats van een vooraf gedefinieerde voorwaarde, kunt u een voorwaarde schrijven die tijdens de uitvoering wordt geëvalueerd.

laten we de syntaxis van de zoekopdracht CASE met dit voorbeeld bekijken

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;

Stel dat de vereiste is om bonussen toe te wijzen aan een werknemer op basis van zijn / haar huidige salarisbereik. Als een medewerker aan bepaalde criteria voldoet, moet de AllocateBonus-functie worden aangeroepen, waarbij de bonus medewerker_id en bedrag als parameters wordt gebruikt.

In het bovenstaande voorbeeld hebben we verschillende salarisbereiken gedefinieerd en op basis daarvan wordt de AllocateBonus-functie opgeroepen als het salaris binnen het opgegeven bereik valt.

Opmerking : bij elke iteratie wordt één en slechts één instructie uitgevoerd, hoewel meerdere instructies aan de criteria voldoen. Wanneer clausules altijd in volgorde van boven naar beneden worden geëvalueerd.

Tips

Aangezien de WHEN-clausule in een bepaalde volgorde wordt geëvalueerd, dwz van boven naar beneden, is het raadzaam om de clausules op te sommen die het meest waarschijnlijk het eerst voorkomen, of de frequentie is hoger. In aanvulling op die van een WHEN-clausule is een dure ie-expressie die veel CPU-geheugen vereist als laatste aanwezig moet zijn om de kans op uitvoering te minimaliseren.

3. Geneste CASE-verklaring

Net als de geneste IF-ELSE-instructie, kan de CASE-instructie ook worden genest. De syntaxis blijft hetzelfde, alleen wanneer de uiterlijke voorwaarde aan de criteria voldoet, gaat deze opnieuw door een reeks uitspraken. Laten we het hierboven gezochte CASE-voorbeeld improviseren om te begrijpen hoe de Nested CASE-instructie werkt.

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;

Uitleg

Zoals u ziet, blijft de syntaxis hetzelfde, maar wanneer de voorwaarde weer voldoet, gaat u door een CASE-instructie om de Allocate-functie eindelijk uit te voeren.

Conclusie - CASE-instructie in PL / SQL

Nu we het einde van het artikel hebben bereikt, laten we de belangrijkste punten samenvatten die we in dit artikel hebben besproken. We hebben gezien wat een CASE-instructie in PL / SQL is, de basissyntaxis geleerd met een voorbeeld. We hebben de verschillende soorten CASE-instructies, dat wil zeggen eenvoudige CASE, Searched CASE en de Nested CASE-instructie, besproken met een voorbeeld. We hebben ook geleerd hoe we de CASE-instructie kunnen optimaliseren door de WHEN-clausule op de juiste manier te ordenen.

Aanbevolen artikelen

Dit is een handleiding voor de CASE-instructie in PL / SQL. Hier bespreken we dat hoe de Case Statement werkt in PL / SQL met de voorbeelden en syntaxis. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Wat is PL / SQL?
  2. PL / SQL-opdrachten
  3. Gebruik van SQL
  4. Carrières in PL / SQL
  5. IF-Else-verklaring in Matlab
  6. Lussen in PL / SQL