Oracle Örnekle PL/SQL LOOP

⚡ Akıllı Özet

PL/SQL döngüleri, bir kod bölümünü istenen sayıda tekrar tekrar çalıştırır. PL/SQL, CONTINUE, EXIT, EXIT WHEN ve GOTO ile kontrol edilen temel, FOR ve WHILE döngüleri sunar ve iç içe yapıları düzgün bir şekilde yönetmek için döngülere etiket eklenebilir.

  • 🔁 Amaç: Bir döngü, bir kod bloğunu birçok kez çalıştırarak kod boyutunu ve karmaşıklığını azaltır.
  • 🧭 Döngü Sayacı: Döngünün koşulunu belirleyen sayaç değişkeni, döngünün sona ermesi için değişmelidir.
  • ⏭️ DEVAM ET: Mevcut döngünün geri kalanını atlar ve bir sonraki döngüyü başlatır.
  • 🚪 ÇIKIŞ / ÇIKIŞ ZAMANLARI: İsteğe bağlı olarak, bir Boolean koşulu doğru olduğunda döngüden hemen çıkar.
  • ???? ️ Etiketler: Çift açılı parantezler arasına yerleştirilen bir döngü etiketi, EXIT komutunun dış döngüyü hedeflemesini sağlar.
  • ♾️ Temel Döngü: Açık bir EXIT komutu verilene kadar çalışır; komut verilmediği takdirde sonsuza kadar döngüye girer.
  • 🧩 Üç Tip: Temel döngü, FOR döngüsü ve WHILE döngüsü yaygın kalıpları kapsar.

Oracle PL/SQL Döngüsü

Döngüler nedir?

Döngüler, bir programdaki kodun belirli bir bölümünün istenilen sayıda çalıştırılmasına olanak tanır. Bu eğitimde, PL/SQL'deki döngü kavramına ve döngülerdeki kontrol akışına bakacağız.

Döngü Kavramına Giriş

Döngü kavramı kodlamada aşağıdaki avantajları sağlar:

  • Kodun yeniden kullanılabilirliği.
  • Kod boyutu küçültüldü.
  • Kolay kontrol akışı.
  • Azaltılmış karmaşıklık.

Aşağıdaki diyagram tuvaleti göstermektedir.ping kavramı.

tuvaletping PL/SQL'de kavram akışı

Yukarıdaki şemada, döngü koşulu kontrol edilir ve koşul sağlandığı sürece yürütme bloğu çalışır.

Her yinelemede, döngünün koşulunu belirleyen döngü sayacı değişkeni, kontrolün döngüden çıkmasını sağlamak için değişir. Bazı durumlarda bu sayaç, önceden tanımlanmış bir sayı için artırma veya azaltma işlemidir, diğer durumlarda ise blok, koşul sağlanana kadar çalışmaya devam eden bir arama koşuludur.

Döngü Kontrol İfadeleri

Döngü kavramını öğrenmeden önce, döngü kontrol ifadelerini öğrenmek önemlidir. Bu ifadeler, bir döngü içindeki yürütme akışını kontrol eder.

DEVAM

Bu anahtar kelime, PL/SQL motoruna bir döngü içinde CONTINUE ile karşılaştığında, yürütme bloğundaki kalan kodu atlayıp bir sonraki yinelemeyi hemen başlatmasını söyler. Bu, esas olarak döngü içindeki kodun belirli yineleme değerleri için atlanması gerektiğinde kullanılır.

ÇIKIŞ / ÇIKIŞ NE ZAMAN

Bu anahtar kelime, PL/SQL motoruna mevcut döngüden hemen çıkmasını söyler. İç içe döngülerde, iç döngüdeki EXIT komutu yalnızca iç döngüyü sonlandırır, dış döngüyü değil. 'EXIT WHEN' ifadesi, Boolean bir sonuç veren bir ifadeyle takip edilir; sonuç TRUE ise, kontrol sonlandırılır.

GOTO

Bu ifade, kontrolü etiketli bir ifadeye (“GOTO ;”) aktarır. Aşağıdaki kısıtlamalara sahiptir:

  • Kontrolün aktarımı yalnızca alt programlar içerisinde yapılabilir.
  • Hata ayıklama bölümünden yürütme bölümüne kontrol aktarımı yapılamaz.

Bu ifadeyi, başka bir alternatif yoksa kullanmanız önerilmez, çünkü kod kontrolü tracKontrol bir taraftan diğerine aktarıldığında verimlilik oldukça zorlaşır.

PL/SQL'de Döngü Türleri

PL / SQL Aşağıdaki üç döngü türünü sağlar:

Aşağıdaki tabloda, temel döngü detaylı olarak ele alınmadan önce üçünün karşılaştırılması yer almaktadır.

döngü Çıkış kriteri En iyi kullanım zamanı
Temel döngü Blokta açıkça belirtilmiş ÇIKIŞ Çıkış, sabit bir sayıya veya koşula bağlı değildir.
Döngü için Sayaç menzilinin sonuna ulaştı. İterasyon sayısı önceden bilinmektedir.
WHILE döngüsü Durum yanlış hale gelir. Döngü, bir koşul sağlandığı sürece çalışmalıdır.

Temel Döngü İfadesi

Bu, PL/SQL'deki en basit döngü yapısıdır. Çalıştırma bloğu 'LOOP' anahtar kelimesiyle başlar ve 'END LOOP' ile biter. Döngüden çıkış koşulu, çalıştırma bloğunun içinde verilmelidir ve EXIT anahtar kelimesi açıkça belirtilmelidir.

PL/SQL'de temel döngü yapısı

LOOP
<execution block starts>
<EXIT condition based on developer criteria>
<execution_block_ends>
END LOOP;

Sözdizimi Açıklaması:

  • 'LOOP' anahtar kelimesi döngünün başlangıcını, 'END LOOP' ise sonunu belirtir.
  • Çalıştırma bloğu, EXIT koşulu da dahil olmak üzere çalıştırılması gereken tüm kodu içerir.
  • Yürütme bölümü, herhangi bir yürütülebilir ifade içerebilir.

Not: EXIT anahtar kelimesi içermeyen basit bir döngü ifadesi, asla durmayan sonsuz bir döngüdür.

Örnek 1: Bu örnekte, basit bir döngü ifadesi kullanarak 1'den 5'e kadar olan sayıları yazdırıyoruz.

1'den 5'e kadar sayıları yazdıran temel döngü

DECLARE
a NUMBER:= 1;
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:= a+1;
EXIT WHEN a>5;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Açıklama:

  • Code 2 hattı: 'a' değişkenini 'NUMBER' olarak tanımlayıp '1' değeriyle başlatıyoruz.
  • Code 4 hattı: “Program başlatıldı” ifadesinin yazdırılması.
  • Code 5 hattı: 'LOOP' anahtar kelimesi döngünün başlangıcını belirtir.
  • Code 6 hattı: 'a'nın değerini yazdırır.
  • Code 7 hattı: 'a' değerini 1 artırır.
  • Code 8 hattı: 'a' değerinin 5'ten büyük olup olmadığını kontrol eder.
  • Code 9 hattı: 'END LOOP' anahtar kelimesi, yürütme bloğunun sonunu işaretler.
  • 6 ila 8. satırlar, 'a' değeri 6'ya ulaşana kadar çalışmaya devam eder; bu noktada koşul DOĞRU değerini döndürür ve döngüden çıkılır.
  • Code 10 hattı: “Program tamamlandı” ifadesinin yazdırılması.

Döngülerin Etiketlenmesi

PL/SQL'de döngüler etiketlenebilir. Etiket "<<" ve ">>" işaretleri arasına alınmalıdır. Özellikle iç içe döngülerde, döngüleri etiketlemek daha okunabilir bir yapı sağlar. Etiket, ilgili döngüden çıkmak için bir EXIT komutunda verilebilir; böylece kontrol, EXIT komutunu ve ardından dış döngü etiketini vererek iç içe yapının dış döngüsünden doğrudan çıkabilir.

Etiketli iç içe döngü yapısı

<<OUTER_LOOP>>
LOOP
<execution_block_starts>
.
<<INNER_LOOP>>
LOOP --inner
<execution_part>
END LOOP;
.
<execution_block_ends>
END LOOP;

Sözdizimi Açıklaması:

  • Dış ilmeğin içinde bir ilmek daha var.
  • '< >' ve '< '>' bu döngülerin etiketleridir.

Örnek 1: Bu örnekte, temel bir döngü ifadesi kullanarak 1'den başlayarak sayılar yazdırıyoruz. Her sayı, değeri kadar kez yazdırılıyor. Serinin üst sınırı, bildirim kısmında sabitlenmiştir. Bunu başarmak için etiket kavramını kullanıyoruz.

Etiketli döngü örneği, bölüm 1Etiketli döngü örneği, bölüm 2

DECLARE
a NUMBER:= 0;
b NUMBER;
upper_limit NUMBER := 4;
BEGIN
dbms_output.put_line('Program started.');
<<outer_loop>>
LOOP
a:= a+1;
b:= 1;
<<inner_loop>>
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:= b+1;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Açıklama:

  • Code 2-3. satırlar: 'a' ve 'b' değişkenlerini 'NUMBER' veri türünde tanımlıyoruz.
  • Code 4 hattı: 'upper_limit' değişkenini 'NUMBER' türünde ve '4' değerinde tanımlıyoruz.
  • Code 6 hattı: “Program başlatıldı” ifadesinin yazdırılması.
  • Code 7 hattı: Dış döngüye “outer_loop” etiketi verilmiştir.
  • Code 9 hattı: 'a'nın değeri 1 artırılır.
  • Code 11 hattı: İç döngüye “inner_loop” adı verilmiştir.
  • Code 13 hattı: 'a' değerinin 'upper_limit' değerinden yüksek olup olmadığını kontrol eden EXIT koşulu. Eğer değilse, devam eder; aksi takdirde dış döngüden doğrudan çıkar.
  • Code 14 hattı: 'b' değerini yazdırma.
  • Code 15 hattı: 'b' değerini 1 artırır.
  • Code 16 hattı: 'b'nin 'a'dan büyük olup olmadığını kontrol eden EXIT koşulu. Eğer öyleyse, iç döngüden çıkılır.
  • Code 19 hattı: “Program tamamlandı” ifadesinin yazdırılması.

SSS

EXIT, döngüyü koşulsuz olarak terk eder. EXIT WHEN ise yalnızca aşağıdaki Boolean ifadesi doğru olduğunda döngüyü terk eder; bu da düz bir EXIT'in etrafına ayrı bir IF koyma ihtiyacını ortadan kaldırır.

Bir etiket, iç içe döngüdeki bir EXIT komutunun, adlandırılmış dış döngüyü tek adımda sonlandırmasını sağlar. Ayrıca iç içe yazılmış kodun okunmasını çok daha kolay hale getirir. tracking plain END LOOP ifadeleri.

Blokta ÇIKIŞ yoksa veya sayaç hiçbir zaman çıkış koşuluna ulaşmazsa, döngü asla durmaz. Her zaman sayacın ÇIKIŞ DURUMU'na doğru değiştiğinden emin olun.

Genellikle evet. Yapay zeka yapabilir. tracSayacın ÇIKIŞ durumuna doğru hareket edip etmediğini kontrol edin ve bir döngünün ulaşılabilir bir çıkışı olmadığında uyarı verin; ancak veriye bağlı bir çıkışın doğrulanması için yine de bir test çalıştırması gerekir.

CONTINUE komutu, mevcut döngünün geri kalanını atlar ve bir sonraki döngüye geçer. Belirli değerlerin döngüden tamamen çıkmadan göz ardı edilmesi gerektiğinde kullanışlıdır.

Bu yazıyı şu şekilde özetleyin: