Merhaba PL/SQL yazılarına devam ediyoruz geçtiğimiz yazıda CASE-WHEN yapısını incelemiştik bu yazıya geçmeden ona göz atmanızda fayda var https://ittutorial.org/pl-sql-programlama-6/.
Bu yazıda Döngüler’i inceleyeceğiz
Döngüler(Loops):
Kod yazımında bazı işlemlerle çalıştıracağımız kod bloklarının belirli aralıkta veya sıralı olarak işlem yapma ihtiyacı duyabiliriz. Bu tarz durumlarda döngüleri, vereceğimiz koşullarla beraber kullanabiliriz.
LOOP : En temel döngü tipidir
WHILE LOOP: Bir şartın sağlanması sonucunda çalışan döngüdür
FOR…LOOP: Belirli bir sayıda yapılan işlemler için kullanılır
Nested LOOP: İç içe yer alan döngülerdir.
LOOP Yapısı:
PL/SQL ‘de en temel döngü tipidir LOOP-END LOOP bloğu içerisinde kodlar çalıştırılır
EXIT Kullanımı:
Blok içerisinde çalıştırılan kodların içinde EXIT ya da EXIT-WHEN ile bloktan direk çıkarma işlemini yapar
DECLARE sayi NUMBER :=0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('Döngü içinde = ' || TO_CHAR(sayi)); sayi:=sayi +1; IF sayi>5 THEN EXIT; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE('LOOP Döngüsü dışında = ' || TO_CHAR(sayi)); END; /
EXIT WHEN Kullanımı:
Bu yapı da az önce örnek yaptığımız IF yapısına benzer şekilde çalışır orada IF kullanarak çıkış yapmıştık burada WHEN ile yapacağız.
DECLARE
sayi NUMBER:=0;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(‘Döngü içinde = ‘ || TO_CHAR(sayi));
sayi:=sayi+1;
EXIT WHEN sayi>3;
END LOOP
DBMS_OUTPUT.PUT_LINE(‘LOOP Döngüsü dışında = ‘ || TO_CHAR(sayi));
END;
/
CONTINUE Kullanımı:
Kod içerisinde kullanacağımız ve döngünün devamını sağlayacak operatördür.
DECLARE sayi NUMBER:=0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('LOOP icinde = ' TO_CHAR(sayi)); sayi:=sayi+1; IF sayi >3 THEN CONTINUE; END IF; DBMS_OUTPUT.PUT_LINE('LOOP icinde CONTINUE sonrası =' || TO_CHAR(sayi)); EXIT WHEN sayi=5; END LOOP; DBMS_OUTPUT.PUT_LINE('LOOP dısında = ' || TO_CHAR(sayi)); END; /
CONTINUE WHEN Kullanımı:
Döngü içerisinde kullandığımız bu operatör EXIT WHEN’de olduğu gibi bir koşulu denetler ve döngünün bulunduğu noktadan başa dönmesini sağlar.
Örnek kullanımına bakalım,
DECLARE sayi NUMBER:=0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('LOOP icinde = '|| TO_CHAR(sayi)); sayi:=sayi+1; CONTINUE WHEN sayi<3; DMBS_OUTPUT.PUT_LINE('LOOP icinde, CONTINUE EXIT sonrası ='||TO_CHAR(sayi)); EXIT WHEN sayi=5; END LOOP; DBMS_OUTPUT.PUT_LINE('LOOP dışında '||TO_CHAR(sayi)); END; /
Örnekleri çoğaltmak mümkün, en basit şekilde anlaşılması için örnekleri basit ele aldık bir sonraki yazı da döngülere devam edeceğiz görüşmek üzere..