Oracle PL / SQL: Örneklerle CASE İfadesi

İçindekiler:

Anonim

CASE İfadesi nedir?

Bir CASE ifadesi, mevcut seçeneklerden koşula göre bir alternatif seçen IF-THEN-ELSIF ifadesine benzer.

  • CASE deyimi, sırayı seçmek için bir Boole ifadesi yerine "seçici" kullanır.
  • CASE ifadesindeki ifadenin değeri bir seçici olarak değerlendirilecektir.
  • İfade herhangi bir türde olabilir (aritmetik, değişkenler vb.)
  • Her alternatif belirli bir önceden tanımlanmış değerle (seçici) atanır ve koşullu ifade değeriyle eşleşen seçici değerine sahip alternatif çalıştırılır.
  • IF-THEN-ELSIF'in aksine, CASE ifadesi SQL ifadelerinde de kullanılabilir.
  • CASE ifadesindeki ELSE bloğu, alternatiflerden hiçbiri seçilmediğinde yürütülmesi gereken sırayı tutar.

Sözdizimi:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Yukarıdaki sözdiziminde ifade, herhangi bir türde (değişken, sayı vb.) Olabilecek bir değer döndürür.
  • Her 'WHEN' yan tümcesi, ve içeren alternatifler olarak ele alınır.
  • İfadenin değeriyle eşleşen 'WHEN' yan tümcesi seçilecek ve karşılık gelen çalıştırılacaktır.
  • "ELSE" bloğu isteğe bağlıdır ve alternatiflerden hiçbiri ifade değeriyle eşleşmediğinde yürütülmesi gereken değerini tutar.
  • 'END', CASE ifadesinin sonunu gösterir ve CASE'in zorunlu bir parçasıdır.

Örnek 1: Büyük / Küçük Harf Kullanarak Aritmetik Hesaplama

Bu örnekte, 55 ve 5 numaralı iki sayı arasında aritmetik hesaplama yapacağız.

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;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkeninin 'NUMARA' veri türü olarak bildirilmesi ve '55' değeriyle başlatılması.
  • Kod satırı 3: 'b' değişkenini 'NUMARA' veri türü olarak bildirmek ve onu '5' değeriyle başlatmak.
  • Kod satırı 4: 'arth_operation' değişkenini 'VARCHAR2' veri türü 20 boyutunda ilan etmek ve onu 'MULTIPLY' değeriyle başlatmak.
  • Kod satırı 6: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 7: CASE, ifadenin değerini kontrol eder. Bu durumda, "arth_operation" değişkeninin değeri "MULTIPLY" dir. Bu değer, şimdi bu CASE ifadesi için bir seçici olarak ele alınacaktır.
  • Kod satırı 10: 'MULTIPLY' değerine sahip WHEN cümlesi seçici değerle eşleşir, bu nedenle denetleyici bu action_block'u seçecek ve 'Sayıların çarpımı: 275' mesajını yazdıracaktır.
  • Code line13: CASE ifadesinin sonunu işaretler.
  • Code line14: "Program tamamlandı" ifadesinin yazdırılması.

Kod Çıkışı:

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

ARANAN DURUM İfadesi

SEARCHED CASE ifadesi, alternatifi seçmek için seçiciyi kullanmak yerine CASE ifadesine benzer, SEARCHED CASE doğrudan WHEN yan tümcesinde tanımlanan ifadeye sahip olacaktır.

  • Koşulu karşılayan ilk WHEN cümlesi yürütülecek ve denetleyici kalan alternatifleri atlayacaktır.

Sözdizimi:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Yukarıdaki sözdiziminde, her WHEN yan tümcesi ayrı ve 'a sahiptir.
  • İfadenin TRUE döndürdüğü WHEN yan tümcesi yürütülecektir.
  • "ELSE" bloğu isteğe bağlıdır ve alternatiflerden hiçbiri karşılamadığında yürütülmesi gereken değerini tutar.
  • 'END', CASE ifadesinin sonunu gösterir ve CASE'in zorunlu bir parçasıdır.

Örnek 1: Aranan Durumu Kullanarak Aritmetik Hesaplama

Bu örnekte, 55 ve 5 numaralı iki sayı arasında aritmetik hesaplama yapacağız.

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;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkeninin 'NUMARA' veri türü olarak bildirilmesi ve '55' değeriyle başlatılması.
  • Kod satırı 3: 'b' değişkeninin 'NUMARA' veri türü olarak bildirilmesi ve '5' değeriyle başlatılması.
  • Kod satırı 4: 'arth_operation' değişkenini 'VARCHAR2' veri türü 20 boyutunda ilan etmek ve onu 'DIVIDE' değeriyle başlatmak.
  • Kod satırı 6: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 7: ARANMIŞ DURUM ifadesi başlar. Satır 8'den satır 13'e kadar olan kod, seçici değeri (ADD, SUBTRACT, MULTIPLY) 'arth_operation' değeriyle eşleşmediğinden atlanır.
  • Kod satırı 14: "arth_operation = 'DIVIDE'" WHEN yan tümcesi ifadesi karşılandı ve ifade TRUE değerini döndürdü.
  • Kod satırı 15: WHEN yan tümcesinin Action_block'u yürütülecek ve 'Sayıların bölümü: 11' mesajı yazdırılacaktır.
  • Kod satırı 17: CASE ifadesinin sonunu işaretler.
  • Kod satırı 18: "Program tamamlandı" ifadesinin yazdırılması.

Kod Çıkışı:

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

Özet

TÜR AÇIKLAMA KULLANIM

DURUM

IF-THEN-ELSIF ifadesine benzer. Boole ifadesi yerine alternatifleri seçmek için bir 'SEÇİCİ' kullanılır.

'SEÇİCİ' kullanarak birkaç alternatif arasından seçim yapmak için kullanılır

ARANAN DURUM

Gerçek bir 'SEÇİCİ' içermeyen CASE ifadesi. Bunun yerine, alternatifleri seçecek olan gerçek koşulu (DOĞRU / YANLIŞ olarak değerlendirilen) içerir.

Çoğunlukla ikiden fazla alternatif arasından seçim yapmak için kullanılır.