1. Kullanım en çok kullanılan döngü çeşidi olan for döngüleridir.Kulanım şekli (Syntax'ı) aşağıda gösterildiği gibidir.
For döngüsü kullanım şekli (Syntax);
FOR sayac IN [REVERSE] alt_index .. ust_index
LOOP
{.Yapılacak işlemler.}
--Yapılacak işlemler
END LOOP;
Yukarıda syntax'ı verilen for döngüsü için "sayac" isimli değişken , döngü değişkeni dir ve kullanım şekline göre (REVERSE keyword 'ünün durumuna göre) ya birer birer artar yada azalır.REVERSE anahtar kelimesi yazılırsa sayac değişkeninin değeri birer birer azalır.
Ufak bir örnek vermek gerekirse 1'den 100'e kadar olan sayıları ve kare'lerini bir tabloya INSERT eden bir sorgu yazalım.
FOR sayac IN 1 .. 100
LOOP
--Yapılacak işlemler
INSERT
INTO TABLE_NAME
(
COLUMN1,
COLUMN2
)
VALUES(
sayac, --Döngü
değişkeni
sayac*sayac --Döngü
değişkeninin karesi
)
END LOOP;
Yukarıda anlatılan kullanım şeklinin yanında For döngüsünün ikinci bir kullanım şekli daha vardır bu 2. kullanım şekliyle kayıt setleri içerisinde dönebilirsiniz.
For döngüsü kullanım şekli (Syntax);
FOR kayit in kayit_seti
LOOP
{.Yapılacak işlemler.}
--Yapılacak işlemler
END LOOP;
Yukarıda syntax'ı verilen for döngüsünü açıklamak gerekirse kayit_seti isimli Veri setimiz bir "Cursor" , "Tablodan çekilen Select" , Oracle Dizileri veya bir Record Set olabilir ve bu kayıt seti içerisindeki her bir satır sırasıyla kayit isimli değişkenimize yüklenir ve kayit"." diyerek bu satırda bulunan bütün kolonlara erişim imkanımız bulunmaktadır.Basit bir örnekle açıklamak gerekirse Bir tablodaki verileri alıp başka bir tabloda yedekleyen bir sorgu yazalım.Bunu elbetteki çok basit bir yolla yapabiliriz ama şu an amacımız döngüleri öğrenmek olduğu için döngülerle bu işi yapalım.
FOR KAYIT IN (SELECT TABLE_ID
COLUMN1,
COLUMN2
FROM TABLE_NAME
WHERE COLUMN3 = 5)
LOOP
--Yapılacak işlemler
INSERT
INTO YEDEK
(
COLUMN1,
COLUMN2,
RF_TABLE_ID
)
VALUES(
KAYIT.COLUMN1,
KAYIT.COLUMN2,
KAYIT.TABLE_ID
);
END LOOP;
2. Döngü kullanım şeklide "While" veya "Do While" olarak bilinen "Repeat-Until Loop" döngü çeşitidir.
Kullanım şekli (Syntax);
DECLARE
recordIndex NUMBER := 1;
BEGIN
LOOP
--Yapılacak İşlemler
recordIndex := recordIndex + 1;
EXIT WHEN recordIndex > 5; --Eğer
döngü değişkeni 5'den büyük bir değere ulaşmıssa döngüden çık
END LOOP;
END;
Yukarıda 'ki döngü syntax'ında EXIT WHEN recordIndex > 5; satırının konumuna göre döngünüz "While" veya "Do While" diye nitelendirdiğimiz döngülerden biri olacaktır.
Veya isterseniz direk olarak While döngüsü kullanabilirsiniz.
Kullanım şekli (Syntax);
DECLARE
recordIndex NUMBER := 1;
BEGIN
WHILE recordIndex > 5 LOOP
--Yapılacak İşlemler
recordIndex := recordIndex + 1;
END LOOP;
END;
ellerinize sağlık çok işime yaradı
YanıtlaSilçok güzel paylaşım olmuş. teşekkürler.
YanıtlaSil