VAKA Açıklaması Oracle Örneklerle PL/SQL
VAKA Beyanı nedir?
CASE ifadesi, mevcut seçenekler arasından duruma göre bir alternatifi seçen IF-THEN-ELSIF ifadesine benzer.
- CASE deyimi, diziyi seçmek için Boolean ifadesi yerine "seçici"yi kullanır.
- CASE deyimindeki ifadenin değeri seçici olarak değerlendirilecektir.
- İfade herhangi bir türde olabilir (aritmetik, değişkenler vb.)
- Her alternatife önceden tanımlanmış belirli bir değer (seçici) atanır ve koşullu ifade değeriyle eşleşen seçici değerine sahip alternatif yürütülür.
- IF-THEN-ELSIF'den farklı olarak CASE ifadesi SQL ifadelerinde de kullanılabilir.
- CASE deyimindeki ELSE bloğu, alternatiflerden hiçbiri seçilmediğinde yürütülmesi gereken sırayı tutar.
Sözdizimi
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> 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ürecektir.
- Her 'WHEN' cümleciği, aşağıdaki özelliklere sahip bir alternatif olarak değerlendirilir: Ve .
- İfadenin değeriyle eşleşen 'WHEN' cümlesi seçilecek ve karşılık gelen infaz edilecek.
- 'ELSE' bloğu isteğe bağlıdır; alternatiflerden hiçbiri ifade değeriyle eşleşmediğinde bunun yürütülmesi gerekir.
- 'END', CASE ifadesinin sonunu belirtir ve CASE'in zorunlu bir parçasıdır.
Örnek 1: Vaka Kullanarak Aritmetik Hesaplama
Bu örnekte 55 ve 5 olmak üzere iki sayı arasında aritmetik hesaplama yapacağız.
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; /
Kod Açıklama
- Kod satırı 2: 'a' değişkeninin 'NUMBER' veri türü olarak bildirilmesi ve '55' değeriyle başlatılması.
- Kod satırı 3: 'b' değişkeninin 'NUMBER' veri türü olarak bildirilmesi ve '5' değeriyle başlatılması.
- Kod satırı 4: 'arth_operation' değişkenini 2 boyutunda 'VARCHAR20' veri türü olarak bildirmek 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' olur. Bu değer artık bu CASE deyimi için seçici olarak değerlendirilecektir.
- Kod satırı 10: 'MULTIPLY' değerine sahip WHEN yan tümcesi seçici değeriyle eşleşir, dolayısıyla denetleyici bu action_block'u seçecek ve 'Sayıların çarpımı: 275' mesajını yazdıracaktır.
- Kod satırı13: CASE ifadesinin sonunu belirtir.
- Kod satırı14: “Program tamamlandı” ifadesinin yazdırılması.
Kod Çıkışı
Program started. Multiplication of the numbers are: 275 Program completed.
ARANAN VAKA Beyanı
SEARCHED CASE deyimi CASE deyimine benzer; alternatifi seçmek için seçiciyi kullanmak yerine, SEARCHED CASE doğrudan WHEN deyiminde 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
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Yukarıdaki sözdiziminde, her WHEN yan tümcesi ayrı Ve .
- İfadenin TRUE değerini döndürdüğü WHEN yan tümcesi yürütülecektir.
- 'ELSE' bloğu isteğe bağlıdır; alternatiflerden hiçbiri karşılanmadığında uygulanması gerekir.
- 'END', CASE ifadesinin sonunu belirtir ve CASE'in zorunlu bir parçasıdır.
Örnek 1: Aranan Durumu Kullanarak Aritmetik Hesaplama
Bu örnekte 55 ve 5 olmak üzere iki sayı arasında aritmetik hesaplama yapacağız.
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; /
Kod Açıklama
- Kod satırı 2: 'a' değişkeninin 'NUMBER' veri türü olarak bildirilmesi ve '55' değeriyle başlatılması.
- Kod satırı 3: 'b' değişkeninin 'NUMBER' veri türü olarak bildirilmesi ve '5' değeriyle başlatılması.
- Kod satırı 4: 'arth_operation' değişkenini 2 boyutunda 'VARCHAR20' veri türü olarak bildirmek ve onu 'DIVIDE' değeriyle başlatmak.
- Kod satırı 6: “Program başladı” ifadesinin yazdırılması.
- Kod satırı 7: SEARCHED CASE ifadesi başlıyor. Seçici değerleri (ADD, SUBTRACT, MULTIPLY) 'arth_operation' değeriyle eşleşmediğinden satır 8'den satır 13'e kadar olan kod atlanır.
- Kod satırı 14: "arth_operation = 'DIVIDE'" WHEN yan tümcesi ifadesi karşılanır ve ifade TRUE değerini döndürür.
- Kod satırı 15: WHEN cümlesinin Action_block'u yürütülecek ve 'Sayıların bölümü: 11' mesajı yazdırılacak.
- Kod satırı 17: CASE ifadesinin sonunu belirtir.
- Kod satırı 18: “Program tamamlandı” ifadesinin yazdırılması.
Kod Çıkışı
Program started. Division of the numbers are: 11 Program completed.
ÖZET
TİP | AÇIKLAMA | KULLANIM |
---|---|---|
OLGU | Benzer IF-THEN-ELSIF ifade. Alternatifleri seçmek için Boole ifadesi yerine 'SEÇİCİ' kullanılır. | 'SELECTOR'u kullanarak çeşitli alternatifler arasından seçim yapmak için kullanılır |
ARADIĞI VAKA | Gerçek bir 'SELECTOR' içermeyen CASE ifadesi. Bunun yerine, alternatifleri seçecek gerçek koşulu (DOĞRU/YANLIŞ olarak değerlendiren) içerir. | Çoğunlukla ikiden fazla alternatif arasından seçim yapmak için kullanılır. |