Oracle PL / SQL IF THEN ELSE İfadesi: ELSIF, NESTED-IF

İçindekiler:

Anonim

Karar Verme Beyanları nelerdir?

Karar verme ifadeleri, koşullara göre SQL ifadelerinin akış kontrolüne karar verecek olanlardır. Programcıya, belirli bir kodun yürütülmesini (şema 1) veya duruma bağlı olarak istenen bir kodu seçmesini (şema 2) önlemek için daha iyi bir kontrol sağlar. Aşağıda "Karar Verme Beyanı" nın resimli temsili bulunmaktadır.

Karar Verme Beyanı Diyagramı

Karar Verme Beyanı Türleri:

Oracle, aşağıdaki türden karar verme beyanları sağlar.

  • IF-THEN
  • EĞER-DEĞİLSE
  • IF-THEN-ELSIF
  • NESTED-IF
  • DURUM
  • ARANAN DURUM

Bu eğitimde öğreneceksiniz-

  • Karar Verme İfadelerine Giriş
  • IF-THEN Beyanı
  • IF-THEN-ELSE İfadesi
  • IF-THEN-ELSIF Beyanı
  • NESTED-IF Beyanı

IF-THEN Beyanı

IF-THEN deyimi esas olarak kodların belirli bir bölümünü yalnızca koşul karşılandığında yürütmek için kullanılır.

Koşul, Boolean (Doğru / Yanlış) vermelidir. ORACLE'nin önceden tanımlanmış koşullara göre belirli bir kod parçasını yürütmesine / atlamasına izin verecek temel bir koşullu ifadedir.

IF THEN İfadeleri için Sözdizimi:

IF THEN-executed only if the condition returns TRUEEND if;
  • Yukarıdaki sözdiziminde, 'EĞER' anahtar kelimesinin ardından 'DOĞRU' / 'YANLIŞ' olarak değerlendirilen bir koşul gelecektir.
  • Kontrol, öğesini yalnızca koşul döndürürse yürütür.
  • Koşulun olarak değerlendirilmesi durumunda, SQL 'u atlayacak ve' END IF 'bloğunun yanındaki kodu yürütmeye başlayacaktır.

Not: Koşul "NULL" olarak değerlendirildiğinde, SQL "NULL" u "FALSE" olarak değerlendirecektir.

Örnek 1 : Bu örnekte, sayı 100'den büyük olduğunda bir mesaj yazdıracağız. Bunun için aşağıdaki kodu çalıştıracağız.

Bir sayı 100'den büyük bir değere sahip olduğunda bir mesaj yazdırmak için aşağıdaki kodu çalıştırırız.

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkenini 'NUMARA' veri türü olarak bildirmek ve onu '10' değeriyle başlatmak.
  • Kod satırı 4: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 5: "a" değişkeninin "100" den büyük olup olmadığının kontrol edilmesi.
  • Kod satırı 6: 'a' '100'den büyükse, o zaman "a 100'den büyüktür" yazdırılacaktır. 'A' 100'den küçük veya 100'e eşitse, koşul başarısız olur, bu nedenle yukarıdaki yazdırma ifadesi yok sayılır.
  • Kod satırı 8: "Program tamamlandı" bildiriminin yazdırılması.

Kod Çıkışı:

Program started.Program completed. 

Örnek 2: Bu örnekte, belirli bir alfabe İngilizce ünlülerde (A, E, I, O, U) mevcutsa bir mesaj yazdıracağız.

Verilen karakter Sesli olduğunda bir mesaj yazdırmak için aşağıdaki kodu çalıştırıyoruz.

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkenini '1' veri türünün 'CHAR' olarak bildirmek ve 'u' değeriyle başlatmak.
  • Kod satırı 4: 'a' değişkeninin listede ('A', 'E', 'I', 'O', 'U') olup olmadığının kontrol edilmesi.
  • Karşılaştırmanın büyük / küçük harfe duyarlı olmaması için karşılaştırmadan önce "a" nın değeri büyük harfe dönüştürüldü.
  • Kod satırı 5: Listede 'a' varsa, "Karakter İngilizce Ünlülerdedir" ifadesi yazdırılacaktır. Eğer koşul başarısız olursa, bu program herhangi bir çıktı vermeyecektir, çünkü IF-THEN bloğunun dışında herhangi bir baskı bildirimi yayınlamadık.

Kod Çıkışı:

The character is in English Vowels

IF-THEN-ELSE İfadesi

  • IF-THEN-ELSE ifadesi esas olarak koşula bağlı olarak iki alternatif arasında seçim yapmak için kullanılır.
  • Aşağıda IF-THEN-ELSE ifadesinin sözdizimi gösterimi bulunmaktadır.

IF-THEN-ELSE İfadeleri için Sözdizimi:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Yukarıdaki sözdiziminde, 'EĞER' anahtar kelimesinin ardından 'DOĞRU' / 'YANLIŞ' olarak değerlendirilen bir koşul gelecektir.
  • Kontrol, 'i yalnızca koşul döndürürse yürütür.
  • Koşulun olarak değerlendirilmesi durumunda SQL, öğesini çalıştıracaktır.
  • Her durumda, iki eylem bloğundan biri yürütülecektir.

Not: Koşul "NULL" olarak değerlendirildiğinde, SQL "NULL" u "FALSE" olarak değerlendirecektir.

Örnek 1 : Bu örnekte, verilen sayının tek mi çift mi olduğu mesajını yazdıracağız.

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkenini 'SAYI' veri türü olarak bildirmek ve onu '11' değeriyle başlatmak.
  • Kod satırı 4: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 5: Koşulun kontrol edilmesi, 'a' değişkeninin '2' modülünün 0 olup olmadığı.
  • Kod satırı 6: Eğer '0' ise, o zaman "a çift sayıdır" yazdırılacaktır.
  • Kod satırı 7: Modül değeri '0'a eşit değilse, koşul ' ı döndürür, bu nedenle "a tek sayıdır" mesajı yazdırılır.
  • Code line10: "Program tamamlandı" ifadesinin yazdırılması

Kod Çıkışı:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF Beyanı

  • IF-THEN-ELSIF ifadesi esas olarak, her alternatifin karşılanması gereken kendi koşullarının olduğu bir dizi alternatif arasından bir alternatifin seçilmesi gerektiğinde kullanılır.
  • döndüren ilk koşullar yürütülecek ve kalan koşullar atlanacaktır.
  • IF-THEN-ELSIF ifadesi, içinde 'ELSE' bloğu içerebilir. Koşullardan hiçbiri yerine getirilmezse bu 'ELSE' bloğu yürütülecektir.

Not : Bu koşullu ifadede ELSE bloğu isteğe bağlıdır. ELSE bloğu yoksa ve koşulların hiçbiri karşılanmazsa, kontrolör tüm eylem bloğunu atlayacak ve kodun kalan kısmını yürütmeye başlayacaktır.

IF-THEN-ELSIF İfadeleri için Sözdizimi:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Yukarıdaki sözdiziminde, kontrol 'i yalnızca koşul1 döndürürse çalıştıracaktır.
  • Koşul 1 karşılanmazsa, denetleyici koşul2'yi kontrol eder.
  • Denetleyici, aşağıdaki iki durumda IF ifadesinden çıkacaktır.
    • Denetleyici döndüren herhangi bir koşul bulduğunda. Bu durumda, ilgili action_block çalıştırılacak ve kontrolör bu IF-deyim bloğundan çıkacak ve kalan kodu yürütmeye başlayacaktır.
    • Koşullardan hiçbiri karşılanmadığında, o zaman kontrolör varsa ELSE bloğunu yürütecek, ardından IF-ifadesinden çıkacaktır.

Not: Koşul "NULL" olarak değerlendirildiğinde, SQL "NULL" u "FALSE" olarak değerlendirecektir.

Örnek 1: ELSE bloğu olmadan

Bu örnekte, notu verilen işaretlere göre başka koşul olmadan yazdıracağız (işaret> = 70 Derece A, işaret> = 40 ve işaret <70 Derece B, işaret> = 35 ve işaret <40 Derece C).

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

Kod Açıklaması:

  • Kod satırı 2: Değişken 'işaretini' 'NUMARA' veri türü olarak bildirmek ve onu '55' değeriyle başlatmak.
  • Kod satırı 4: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 5: "işaret" in 70'den büyük veya eşit olup olmadığına bakılmaksızın koşul1 kontrol ediliyor.
  • Kod satırı 7: Koşul1 başarısız olduğu için, koşul2 '70> işaret> = 40 'kontrol edilir.
  • Kod satırı 8: koşul2 döndürür, bu nedenle 'Derece B' mesajı yazdırılacaktır.
  • Code line12: "Program tamamlandı" ifadesinin yazdırılması.
  • Bu durumda, denetleyici koşul3'ten önce döndüren bir koşul bulduğundan, koşul 3 'işareti <35' atlanacaktır.

Kod Çıkışı:

Program started.Grade BProgram completed.

Örnek 2 : ELSE bloğu ile

Bu örnekte, notu verilen işaretlere göre else koşuluyla yazdıracağız (işaret> = 70 Derece A, işaret> = 40 ve işaret <70 Derece B, işaret> = 35 ve <40 Derece C işareti, aksi takdirde) 'Not Yok').

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

Kod Açıklaması:

  • Kod satırı 2: Değişken 'işaretini' 'NUMARA' veri türü olarak bildirmek ve onu '25' değeriyle başlatmak.
  • Kod satırı 4: "Program başladı" ifadesinin yazdırılması.
  • Kod satırı 5: "işaret" 70'den büyük veya 70'e eşit olsun, koşul 1'in kontrol edilmesi.
  • Kod satırı 7: Koşul1 başarısız olduğu için, koşul2 '70> işaret> = 40 'kontrol edilir.
  • Kod satırı 8: Koşul2 başarısız olduğu için, koşul3 '40> işaret> = 35 'kontrol edilir.
  • Kod satırı 11: Tüm koşullar başarısız olduğu için, kontrol şimdi ELSE bloğunun varlığını kontrol edecek ve ELSE bloğundan 'No Grade' mesajını yazdıracaktır.
  • Code line14: "Program tamamlandı" ifadesinin yazdırılması.

Kod Çıkışı:

Program started.No GradeProgram completed.

NESTED-IF Beyanı

  • NESTED-IF ifadesi temelde programcıların bir veya daha fazla "IF" koşulunu normal ifadeler dışında başka bir "IF" koşulunun içine yerleştirmesine izin verilir.
  • Her "EĞER" koşulu, söz konusu kapsamının sonunu gösteren ayrı bir "SON EĞER" ifadesine sahip olmalıdır.
  • 'EĞER' ifadesi, en yakın 'SON EĞER' ifadesini söz konusu koşul için bir son nokta olarak kabul eder.
  • NESTED-IF için resimli temsili diyagram aşağıda gösterilmiştir.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Sözdizimi Açıklaması:
  • Yukarıdaki sözdiziminde, dış IF, eylem bloğunda bir tane daha IF ifadesi içerir.
  • Koşul1 döndürür, ardından kontrol 'i yürütür ve koşul2'yi kontrol eder.
  • Koşul2 ayrıca döndürürse, de çalıştırılacaktır.
  • Koşul2'nin olarak değerlendirilmesi durumunda, SQL öğesini atlayacaktır.

Burada İç İçe If'nin bir örneğini göreceğiz -

İç İçe İfadesi Örneği: Üç sayının en büyüğü

Bu örnekte, Nested-If ifadesini kullanarak en büyük üç sayıyı yazdıracağız. Numaralar, aşağıdaki kodda görebileceğiniz gibi, beyan kısmında atanacaktır, yani Sayı = 10,15 ve 20 ve maksimum sayı, iç içe-if ifadeleri kullanılarak alınacaktır.

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

Kod Açıklaması:

  • Kod satırı 2: 'a' değişkenini 'NUMARA' veri türü olarak bildirmek ve onu '10' değeriyle başlatmak.
  • Kod satırı 3: 'b' değişkenini 'NUMARA' veri türü olarak bildirmek ve '15' değeriyle başlatmak.
  • Kod satırı 4: 'c' değişkenini 'NUMARA' veri türü olarak bildirmek ve '20' değeriyle başlatmak.
  • Kod satırı 6: "Program başladı" ifadesinin yazdırılması (satır 6).
  • Kod satırı 7: "a" nın "b" den büyük olup olmadığı (satır 7) koşul1 kontrol ediliyor.
  • Kod satırı 10: "a", "b" den büyükse, "iç içe-1 ise" koşul, "a" nın "c" den büyük olup olmadığını kontrol eder (satır 10).
  • Kod satırı 13: Hala 'a' daha büyükse, 'A en büyüktür' mesajı yazdırılacaktır (satır 11). Aksi takdirde, koşul2 başarısız olursa, 'C en büyüktür' yazdırılacaktır (satır 13).
  • Kod satırı 18: Koşul1'in yanlış döndürmesi durumunda, "iç içe-eğer 2" deki koşul "b" nin "c" den büyük olup olmadığını kontrol eder (satır 18).
  • Kod satırı 21: "b", "c" den büyükse, "B en büyüktür" mesajı yazdırılacaktır (satır 19), aksi takdirde koşul2 başarısız olursa, "C en büyüktür" yazdırılacaktır (satır 21).
  • Kod satırı 24: "Program tamamlandı" bildiriminin yazdırılması (satır 24).

Kod çıktısı:

Program started.Checking Nested-IF 2C is greatestProgram completed.

Özet

Bu bölümde, farklı karar verme ifadelerini ve bunların sözdizimini ve örneklerini öğrendik. Aşağıdaki tablo, tartıştığımız çeşitli koşullu ifadelerin özetini vermektedir.

TÜR

AÇIKLAMA

KULLANIM

IF-THEN

'THEN' bloğundaki DOĞRU kod çalıştırılacaksa, bir Boole koşulunu kontrol eder.

Atlamak için / koşula bağlı olarak belirli bir kodu yürütün.

EĞER-DEĞİLSE

Bir Boole koşulunu denetler, eğer 'THEN' bloğundaki DOĞRU kod çalıştırılacaksa, 'ELSE' bloğundaki yanlış kod çalıştırılırsa.

"BU-VEYA-ŞU" durumunda en uygun olanıdır.

IF-THEN-ELSIF

Sıralı sırayla bir Boole koşulunu denetler. Sıradaki TRUE koşulunu döndüren ilk blok yürütülecektir. Sıradaki koşullardan hiçbiri DOĞRU değilse, 'ELSE' bloğundaki kod yürütülür.

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

NESTED-IF

Başka bir IF-THEN veya IF-THEN-ELSIF ifadesinin içinde bir veya daha fazla IF-THEN veya IF-THEN-ELSIF ifadesine izin verir.

Esas olarak iç içe geçmiş durumda kullanılır.