CASE nyilatkozat be Oracle PL/SQL példákkal

Mi az a CASE nyilatkozat?

A CASE utasítás hasonló az IF-THEN-ELSIF utasításhoz, amely a feltétel alapján választ egy alternatívát a rendelkezésre álló lehetőségek közül.

  • A CASE utasítás a „selector”-t használja logikai kifejezés helyett a sorozat kiválasztásához.
  • A CASE utasításban lévő kifejezés értéke választóként lesz kezelve.
  • A kifejezés bármilyen típusú lehet (számítás, változó stb.)
  • Minden alternatívához egy bizonyos előre definiált érték (szelektor) van hozzárendelve, és a feltételes kifejezés értékének megfelelő szelektor értékkel rendelkező alternatíva kerül végrehajtásra.
  • Az IF-THEN-ELSIF-től eltérően a CASE utasítás SQL utasításokban is használható.
  • A CASE utasítás ELSE blokkja tartalmazza azt a szekvenciát, amelyet végre kell hajtani, ha egyik alternatíva sem lett kiválasztva.

Szintaxis

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • A fenti szintaxisban a kifejezés olyan értéket ad vissza, amely bármilyen típusú lehet (változó, szám stb.).
  • Minden „WHEN” záradékot alternatívaként kezelünk, amelyeknek van és .
  • A „WHEN” záradék, amely megegyezik a kifejezés értékével, és a megfelelő ki fogják végezni.
  • Az 'ELSE' blokk nem kötelező, amely tartalmazza a amelyet akkor kell végrehajtani, ha egyik alternatíva sem egyezik a kifejezés értékével.
  • Az 'END' a CASE utasítás végét jelzi, és a CASE kötelező része.

Példa 1: Aritmetikai számítás az eset használatával

Ebben a példában két szám 55 és 5 között fogunk számtani számításokat végezni.

DECLARE
a NUMBER :=55;
b NUMBER :=5;
arth_operation VARCHAR2(20) :='MULTIPLY’;
BEGIN
dbms_output.put_line(‘Program started.' );
CASE (arth_operation)
WHEN ‘ADD’ THEN dbms_output.put_line(‘Addition of the numbers are: '|| a+b );
WHEN ‘SUBTRACT' THEN dbms_output.put_line(‘Subtraction of the numbers are: '||a-b ); 
WHEN ‘MULTIPLY' THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b
);
WHEN ‘DIVIDE' THEN dbms_output.put_line(‘Division of the numbers are:'|| a/b);
ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');
END CASE;
dbms_output.put_line(‘Program completed.' );
END;
/

Kód Magyarázat

  • 2. kódsor: Az 'a' változó 'NUMBER' adattípusként való deklarálása és inicializálása '55' értékkel.
  • 3. kódsor: A 'b' változó 'NUMBER' adattípusként való deklarálása és inicializálása '5' értékkel.
  • 4. kódsor: Az 'arth_operation' változó 2-as méretű 'VARCHAR20' adattípusként való deklarálása és 'MULTIPLY' értékkel történő inicializálása.
  • 6. kódsor: A „Program indulva” utasítás kinyomtatása.
  • 7. kódsor: A CASE ellenőrzi a kifejezés értékét. Ebben az esetben az 'arth_operation' változó értéke 'MULTIPLY'. Ezt az értéket a rendszer most a CASE utasítás választójaként kezeli.
  • 10. kódsor: A 'SZORZAT' értékű WHEN záradék megegyezik a választó értékével, ezért a vezérlő kiválasztja ezt az action_blockot, és kiírja a "Számok szorzása: 275" üzenetet.
  • 13-as kódsor: A CASE utasítás végét jelöli.
  • 14-es kódsor: „A program befejezve” kiírás kinyomtatása.

Kód kimenet

Program started.
Multiplication of the numbers are: 275
Program completed.

KERESÉS ESET Nyilatkozata

A SEARCHED CASE utasítás hasonló a CASE utasításhoz, ahelyett, hogy a választót használná az alternatíva kiválasztásához, a SEARCHED CASE közvetlenül a WHEN záradékban meghatározott kifejezéssel rendelkezik.

  • A feltételnek megfelelő első WHEN záradék végrehajtásra kerül, és a vezérlő kihagyja a többi alternatívát.

Szintaxis

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • A fenti szintaxisban minden WHEN tagmondat különálló és .
  • A WHEN záradék, amelyre a kifejezés IGAZ értéket ad vissza, végrehajtásra kerül.
  • Az 'ELSE' blokk nem kötelező, amely tartalmazza a amelyet akkor kell végrehajtani, ha egyik alternatíva sem kielégítő.
  • Az 'END' a CASE utasítás végét jelzi, és a CASE kötelező része.

Példa 1: Aritmetikai számítás a keresett eset használatával

Ebben a példában két szám 55 és 5 között fogunk számtani számításokat végezni.

DECLARE a NUMBER :=55;
b NUMBER :=5;
arth_operation VARCHAR2(20) :='DIVIDE';
BEGIN
dbms_output.put_line(‘Program started.' );
CASE
WHEN arth_operation = 'ADD'
THEN dbms_output.put_line(‘Addition of the numbers are: '||a+b );
WHEN arth_operation = ‘SUBTRACT'
THEN dbms_output.put_line(‘Subtraction of the numbers are: '|| a-b);
WHEN arth_operation = ‘MULTIPLY’
THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b ); 
WHEN arth_operation = ’DIVIDE'
THEN dbms_output.put_line(‘Division of the numbers are: '|| a/b ):
ELSE dbms_output.put_line(‘No operation action defined. Invalid operation'); 
END CASE;
dbms_output.put_line(‘Program completed.' );
END;
/

Kód Magyarázat

  • 2. kódsor: Az 'a' változó 'NUMBER' adattípusként való deklarálása és inicializálása '55' értékkel.
  • 3. kódsor: A 'b' változó 'NUMBER' adattípusként való deklarálása és inicializálása '5' értékkel.
  • 4. kódsor: Az „arth_operation” változó 2-as méretű „VARCHAR20” adattípusként való deklarálása és „DIVIDE” értékkel történő inicializálása.
  • 6. kódsor: A „Program indulva” utasítás kinyomtatása.
  • 7. kódsor: SEARCHED CASE utasítás kezdődik. A 8. sortól a 13. sorig terjedő kód kimarad, mivel a választó értéke (ADD, KIVONÁS, SZORZÁS) nem egyezik az 'arth_operation' értékével.
  • 14. kódsor: Az „arth_operation = 'DIVIDE'” WHEN záradékkifejezés teljesül, és a kifejezés TRUE-t ad vissza.
  • 15. kódsor: A WHEN záradék Action_blokkja végrehajtásra kerül, és a „Számok felosztása: 11” üzenet kerül kinyomtatásra.
  • 17. kódsor: A CASE utasítás végét jelöli.
  • 18. kódsor: „A program befejeződött” nyilatkozat kinyomtatása.

Kód kimenet

Program started.
Division of the numbers are: 11
Program completed.

Összegzésként

TYPE LEÍRÁS HASZNÁLAT
CASE Hasonló a HA-AKKOR-ELSIF nyilatkozat. A 'SELECTOR' a logikai kifejezés helyett az alternatívák kiválasztására szolgál. Számos alternatíva közül választhat a 'SELECTOR' segítségével
KERESÉS ESET CASE utasítás tényleges „SELECTOR” nélkül. Ehelyett tartalmazza a tényleges feltételt (amely kiértékelése IGAZ/HAMIS), amely kiválasztja az alternatívákat. Általában kettőnél több alternatíva közül lehet választani.