PLSQL FOR Loop Kullanımı | Oracle For Loops

PLSQL For Loop Kullanımı | Oracle For Loops

PLSQL For Loop Kullanımı bize,  içerisinde tanımladığımız kodu tekrar tekrar dilediğimiz kadar çalıştırabilmeyi sağlar. Yani hepimizin, diğer programlama dillerinden, hiç değilse kulak dolgunluğumuzun olduğu gibi for döngüsünün PLSQL de Oracle veritabanı işlemleri için kullandığımız halidir.

For Döngüsü PLSQL döngü yapılarından sadece bir tanesidir.

PLSQL’de sık sık kullandığımız Loop yapıları For Loop ile While Loop yapısıdır. Aynı zamanda bir select sorgusunun satırlarını döngü içerisinde gezebileceğimiz PLSQL Cursor For Loop yapısı genel olarak kullanılır.  Diğer Loop Yapıları için örnek ve anlatımları görebileceğiniz yazılarıma aşağıdaki linkler vasıtasıyla ulaşabilirsiniz.

PLSQL Loop Döngüsü Kullanımı

PLSQL While Döngüsü  Kullanımı

PLSQL Cursor Loop Döngüsü Kullanımı

Bunların hangi durumlarda kullanılması gerektiği hakkında yeterli örneğe sahibiz. Şimdi PLSQL For Loop Kullanımı syntaxı ile devam edelim.

 

PLSQL For loop kullanımı Syntaxı :


FOR sayac IN [REVERSE] baslangic_degeri..son_deger
LOOP
   {. en_buyuk_sayı - en_dusuk_sayı miktarınca çalıştırılacak pl sql kodu .}
END LOOP; 

PLSQL For Loop Kullanımı söz diziminde de gördüğümüz gibi birkaç değişken ile birlikte çalışıyor. ” REVERSE ” ifadesi kullanımı ise seçimliktir . “sayac” değişkeninin ilk değeri “baslangic_degeri”‘ne eşittir. Sonrasında “sayac” değişkeni her defasında 1 (bir) artar. “sayac” değişkeni değeri “son_deger” e ulaştığında ise döngü son defa çalışır.

Şimdi uygulamalı bir örnek yapalım.


Örneğimiz:

declare
baslangic number:=100;
son number:=110;
begin
for sayac in baslangic..son
loop
Dbms_Output.put_line( 'Şuan Döngü içindeki Sayac Değişkeni Değeri : ' ||  sayac);
end loop;
end;

Çıktı:

Şuan Döngü içindeki Sayac Değişkeni Değeri : 100
Şuan Döngü içindeki Sayac Değişkeni Değeri : 101
Şuan Döngü içindeki Sayac Değişkeni Değeri : 102
Şuan Döngü içindeki Sayac Değişkeni Değeri : 103
Şuan Döngü içindeki Sayac Değişkeni Değeri : 104
Şuan Döngü içindeki Sayac Değişkeni Değeri : 105
Şuan Döngü içindeki Sayac Değişkeni Değeri : 106
Şuan Döngü içindeki Sayac Değişkeni Değeri : 107
Şuan Döngü içindeki Sayac Değişkeni Değeri : 108
Şuan Döngü içindeki Sayac Değişkeni Değeri : 109
Şuan Döngü içindeki Sayac Değişkeni Değeri : 110

 

PLSQL For Loop içerisindeki değişkene erişme yöntemleri

PLSQL For loop içerisindeki değişkenimizi, loop dışarısında yazdırmayı deneyelim.

BEGIN
FOR sayici IN 1..3 loop
DBMS_OUTPUT.PUT_LINE (sayici);
END LOOP;
-- Loop sonrasında değişkene erişmek istedik.
DBMS_OUTPUT.PUT_LINE (sayici);
END;

Kodumuzu çalıştırdığımızda, ekran görüntüsündeki hatayı alırız.

PLSQL For Loop Kullanımı
PLSQL For Loop Kullanımı

Bunun sebebi For Loop içerisindeki değişkenin global bir değişken olmamasıdır. Buradaki “sayici” değişkeni yalnızca for içerisinde kullanılabilen local bir değişkendir.

Döngü dışarısında plsql tarafından tanınmaz.

Eğer “sayici” değişkenimizi aşağıdaki gibi oluştursaydık;

 

DECLARE
sayici number;
BEGIN
FOR sayici IN 1..3 loop
DBMS_OUTPUT.PUT_LINE (sayici);
END LOOP;
-- Loop sonrasında değişkene erişmek istedik.
DBMS_OUTPUT.PUT_LINE (sayici);
END;

Hata vermeden “sayici” değişkenimizin değerini alabildiğimizi zannetsek de;
Buradaki “sayici” adını verdiğimiz iki değişken ismi aynı gözükmesine rağmen farklı değişkenlerdir.
Birisi global bir değişken, diğeri ise For loop un index değişkenidir.
Declare bloğunda tanımladığımız “sayici” değişkeninin ilk değeri atanmadığı için ikinci DBMS_OUTPUT.Put_Line(sayici) çıktısı bize “null” sonucunu verecektir.
Demek oluyor ki loop içerisindeki index değişkenine dışarıdan hiçbir şekilde ulaşamıyoruz.

 

Peki Loop içerisindeki son index değerini bir değişkene atamak isteyip, dışarıda kullanmak istersek ne yapmalıyız. Aşağıdaki örneğimiz inceleyelim.

 

DECLARE
  global_sayici number := 10;
BEGIN
  FOR local_sayici IN 1.. 5 loop
    DBMS_OUTPUT.PUT_LINE ('Local Sayici:' ||  local_sayici);
    global_sayici := local_sayici;
  end loop;
  -- Loop'tan sonra
  DBMS_OUTPUT.PUT_LINE ('Global Sayici' || global_sayici);
END;

Örnekte de gördüğümüz gibi, global olarak oluşturduğumuz sayıcı değişkenini , Loop içerisinde Local Sayıcı değişkenimize atadık.

Beraberinde loop dışarısında da rahatlıkla kullanabildik.

Çıktısı:

Local Sayici:1
Local Sayici:2
Local Sayici:3
Local Sayici:4
Local Sayici:5
Global Sayici5

Şeklinde olacaktır.

 

PLSQL For Loop Reverse Kullanımı

Eğer REVERSE ifadesini kullanıp bunları yüksekten yazdırmak istiyorsak


declare
baslangic number:=100;
son number:=110;
begin
for sayac in REVERSE baslangic..son
loop
Dbms_Output.put_line( 'Şuan Döngü içindeki Sayac Değişkeni Değeri : ' || sayac);
end loop;
end;

Çıktısı:

Şuan Döngü içindeki Sayac Değişkeni Değeri : 110
Şuan Döngü içindeki Sayac Değişkeni Değeri : 109
Şuan Döngü içindeki Sayac Değişkeni Değeri : 108
Şuan Döngü içindeki Sayac Değişkeni Değeri : 107
Şuan Döngü içindeki Sayac Değişkeni Değeri : 106
Şuan Döngü içindeki Sayac Değişkeni Değeri : 105
Şuan Döngü içindeki Sayac Değişkeni Değeri : 104
Şuan Döngü içindeki Sayac Değişkeni Değeri : 103
Şuan Döngü içindeki Sayac Değişkeni Değeri : 102
Şuan Döngü içindeki Sayac Değişkeni Değeri : 101
Şuan Döngü içindeki Sayac Değişkeni Değeri : 100;

 

Faydalanmış olduğum kaynağa aşağıdaki link vasıtasıyla ulaşabilirsiniz.

Faydalandığım Kaynak

PLSQL For Loop Kullanımı başlıklı yazımızın sonuna geldik. Daha güzel yazılarda görüşmek dileğiyle 🙂 Türkçe PLSQL Tutorial yazılarıma göz atmak isterseniz. Tıklayınız.