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.