pl/sql de goto kullanımı
Merhaba
Pl/Sql ortamında yazdığımız programlar içerisinde bir kontrolü tekrar tekrar belirli bir şarta göre yapmamız gerekebilir. Bunun için değişik yöntemler kullanırız , belki de hiç yapmamamız geken işlemi yapar aynı kodları tekrar tekrar yazarız. Ama artık bu işleme gerek kalkmadı.Pl/Sql içinde goto kullanımı ile isteğimiz mantıksal kontrolü istediğimiz şarta bağlı olarak çalıştırabiliriz.
Goto söz dizimi olarak aşağıdaki gibi kullanılır. “<<“ ve “>>” ifadeleri arasına yazılan etiket(label) bilgisi bizim goto işlemini kullanırken ihtiyacımız olan etiket bilgisidir.
<<label>>
…
… işlemlerimiz
…
goto label
Örnek olarak bu işlemin daha iyi anlaşılması için pl/sql de basit bir declare yazalım ve 1 ile 10 arasında rasgele sayı üretelim. Ürettiğimiz bu rasgele sayı 2 olana kadar bu işlemi tekrarlayayım.
Aşağıda hazırladığımız declare mevcuttur.
DECLARE deger NUMBER; BEGIN <<tekrar_dene>> deger := round(dbms_random.value(1, 10)); IF deger = 2 THEN dbms_output.put_line('deger:2 bulundu'); ELSE dbms_output.put_line('deger:' || deger); GOTO tekrar_dene; END IF; END;
Declare yazıp çalıştırdıktan sonra artık goto kullanımının sonuçlarını görebiliriz. Benim test ederken aldığım rasgele sayı üretim sonuçları sizin test işleminizde aynı olmayabilir. Bu kod çalıştığında çıkan sonuç aşağıdaki gibidir.
deger:6 deger:8 deger:6 deger:10 deger:10 deger:7 deger:1 deger:4 deger:7 deger:9 deger:2 bulundu
İlk deneme için çıkan sonuçları yukarıdaki gibidir. Birde ikinci kez deneyelim ve farkı net olarak görelim.
deger:6 deger:4 deger:7 deger:7 deger:3 deger:3 deger:10 deger:5 deger:10 deger:10 deger:7 deger:9 deger:3 deger:8 deger:7 deger:9 deger:6 deger:1 deger:7 deger:8 deger:3 deger:6 deger:3 deger:7 deger:5 deger:1 deger:4 deger:6 deger:6 deger:2 bulundu
Kolay gelsin.