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)WHENTHEN 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:
CASEWHENTHEN 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. |