Plsql Döngüler..

1-)PLSQL FOR-LOOP Döngüsü:

1.a )FOR-LOOP Bir aralık için döngü

1 DEN 10a kadar bir döngü tanımlayıp bugunun tarihine döngü değerini ekleyelim ve ekrana bastıralım..

BEGIN
    FOR say IN 1..10
    LOOP
        dbms_output.put_line(say||' gun sonraki tarih> '||to_char(SYSDATE+say,'DD.MM.YYYY'));
    END LOOP;
END;
 
1 gun sonraki tarih> 21.08.2015
2 gun sonraki tarih> 22.08.2015
3 gun sonraki tarih> 23.08.2015
4 gun sonraki tarih> 24.08.2015
5 gun sonraki tarih> 25.08.2015
6 gun sonraki tarih> 26.08.2015
7 gun sonraki tarih> 27.08.2015
8 gun sonraki tarih> 28.08.2015
9 gun sonraki tarih> 29.08.2015
10gun sonraki tarih> 30.08.2015

1.b ) FOR-LOOP bir aralık için ters döngü

Normalinden farkı REVERSE anahtar kelimesi kullanılır, döngüyü tersten çalıştırır.

BEGIN
    FOR say  IN REVERSE 1..10
    LOOP
       dbms_output.put_line(say||' gun sonraki tarih> '||to_char(SYSDATE+say,'DD.MM.YYYY'));
    END LOOP;
END;
 
10gun sonraki tarih> 30.08.2015
9 gun sonraki tarih> 29.08.2015
8 gun sonraki tarih> 28.08.2015
7 gun sonraki tarih> 27.08.2015
6 gun sonraki tarih> 26.08.2015
5 gun sonraki tarih> 25.08.2015
4 gun sonraki tarih> 24.08.2015
3 gun sonraki tarih> 23.08.2015
2 gun sonraki tarih> 22.08.2015
1 gun sonraki tarih> 21.08.2015

1.c ) FOR-LOOP ile recordset döngüsü:

Bir SELECT kayıt setini döngü içine sokup işlemlerimizi yapabiliriz.

BEGIN
    FOR rec_ IN (SELECT * FROM user_objects)
    LOOP
        dbms_output.put_line('Object > '||rec_.object_type||':'||rec_.object_name);
        -- Ya da başka işlemler..
    END LOOP;
END;
 
Object > TABLE:DENEME_TAB

2-) WHILE-LOOP Döngüleri

2.a ) WHILE LOOP Döngüsü

counter_ değişkenimiz 0-5 aralığında döngüye girsin ve değerini ekrana bastıralım..

DECLARE
    counter_ NUMBER := 0;
BEGIN
    WHILE counter_ < 5 LOOP         
    --Ya da başka işlemler..         
    counter_ := counter_ + 1;      
    dbms_output.put_line('Counter degeri > '||counter_);  
    END LOOP;
END;
 
Counter degeri > 1
Counter degeri > 2
Counter degeri > 3
Counter degeri > 4
Counter degeri > 5

2.b ) LOOP Döngüsü:

WHILE loopla aynı görünse de farkı WHILE LOOP şartı ilk aşamada kontrol ediyor, yani uygun değilse döngüye hiç girmiyor. Loopda ise şart sağlanmasa bile en az 1 kere döngüye giriliyor ve şart sağlanmadığı için döngüden çıkılıyor.

DECLARE
    counter_ NUMBER := 0;
BEGIN
    LOOP
        --Ya da başka işlemler..
        counter_ := counter_ + 1;
        EXIT WHEN counter_   > 7; 
        dbms_output.put_line('Counter degeri > '||counter_);
    END LOOP;
END;
 
Counter degeri > 1
Counter degeri > 2
Counter degeri > 3
Counter degeri > 4
Counter degeri > 5
Counter degeri > 6
Counter degeri > 7

Tagged: , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir