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

Tartalomjegyzék:

Anonim

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ó opciók közül.

  • A CASE utasítás "szelektor" -ot használ egy logikai kifejezés helyett a szekvencia kiválasztásához.
  • A CASE utasításban szereplő kifejezés értékét választóként kezeljük.
  • A kifejezés bármilyen típusú lehet (számtani, változók stb.)
  • Minden alternatívához egy előre meghatározott értéket (választót) rendelünk, és a feltételes kifejezés értékének megfelelő választó értékkel rendelkező alternatívát végrehajtják.
  • Az IF-THEN-ELSIF-től eltérően a CASE utasítás SQL-utasításokban is használható.
  • Az ELSE blokk a CASE utasításban azt a sorrendet tartalmazza, amelyet végre kell hajtani, ha egyik alternatívát sem választották ki.

Szintaxis:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  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 <értéke> és van.
  • Kiválasztásra kerül a WHEN záradék, amely megegyezik a kifejezés értékével, és a megfelelő végrehajtásra kerül.
  • Az 'ELSE' blokk opcionális, amely az értéket tartalmazza, amelyet akkor kell végrehajtani, ha egyik alternatíva sem felel meg a kifejezés értékének.
  • Az „END” jelöli a CASE utasítás végét, és ez a CASE kötelező része.

1. példa: Számtani számítás Case használatával

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

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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ó deklarálása „NUMBER” típusú adattípusként és inicializálása „55” értékkel.
  • 3. kódsor: A „b” változó deklarálása „NUMBER” típusú adattípusként és inicializálása „5” értékkel
  • 4. kódsor: Az „arth_operation” változó deklarálása „VARCHAR2” 20-as típusú adattípusként és inicializálás „MULTIPLY” értékkel.
  • 6. kódsor: A "Program elindult" 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 most a CASE utasítás kijelölőjeként kezeljük.
  • 10. kódsor: A „MULTIPLY” értékű WHEN záradék egyezik a választó értékével, ezért a vezérlő kiválasztja ezt a action_block-ot, és kinyomtatja a „A számok szorzása: 275” üzenetet.
  • 13. kódsor: A CASE utasítás végét jelöli.
  • Kódsor14: A "Program befejezve" utasítás nyomtatása.

Kód kimenet:

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

KERESETT ESET kimutatás

A SEARCHED CASE utasítás hasonló a CASE utasításhoz, ahelyett, hogy a választó segítségével választaná ki az alternatívát, a SEARCHED CASE közvetlenül a WHEN záradékban definiált kifejezést kapja.

  • Az első WHEN záradék, amely kielégíti a feltételt, végrehajtásra kerül, és a vezérlő kihagyja a többi alternatívát.

Szintaxis:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • A fenti szintaxisban az egyes WHEN-záradékoknak külön vannak az és az elemek.
  • A WHEN záradék, amelyre a kifejezés az IGAZ értéket adja vissza, végrehajtásra kerül.
  • Az 'ELSE' blokk opcionális, amely megtartja az értéket, amelyet akkor kell végrehajtani, ha egyik alternatíva sem teljesül.
  • Az „END” jelöli a CASE utasítás végét, és ez a CASE kötelező része.

1. példa: Számtani számítás a keresett eset felhasználásával

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

DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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ó deklarálása „NUMBER” típusú adattípusként és inicializálása „55” értékkel.
  • 3. kódsor: A „b” változó deklarálása „NUMBER” típusú adattípusként és inicializálása „5” értékkel.
  • 4. kódsor: Az „arth_operation” változó deklarálása „VARCHAR2” adattípusnak, 20-as méret, és inicializálás „DIVIDE” értékkel.
  • 6. kódsor: A "Program elindult" utasítás kinyomtatása.
  • 7. kódsor: A KERESETT ESET utasítás megkezdődik. A 8. sor és a 13. sor közötti kód átugrásra kerül, mivel a kiválasztó értékük (ADD, SUBTRACT, MULTIPLY) nem egyezik az 'arth_operation' értékével.
  • 14. kódsor: A WHEN záradékkifejezés "arth_operation = 'DIVIDE" "teljesül, és a kifejezés IGAZ-ot ad vissza.
  • 15. kódsor: A WHEN záradék Action_block-ja végrehajtásra kerül, és a „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 befejezve" utasítás nyomtatása.

Kód kimenet:

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

Összegzés

TÍPUS LEÍRÁS HASZNÁLAT

ÜGY

Hasonló az IF-THEN-ELSIF állításhoz. A logikai kifejezés helyett az 'alternatíva kiválasztására' SELECTOR 'jelölést használnak.

Számos alternatíva közül választhat a 'SELECTOR' segítségével

KERESETT ESET

CASE utasítás tényleges 'SELECTOR' nélkül. Ehelyett tartalmazza a tényleges feltételt (amely IGAZ / HAMIS értéket ad), amely kiválasztja az alternatívákat.

Több mint két alternatíva közül választhat.