PLSQL GOTO Kullanımı | PLSQL Nedir ?
Bu yazımızda PLSQL Goto deyiminin kullanımını ve sınırlarını paylaşacağız.
PLSQL GOTO Kullanımı
GOTO etiket_ismi;
Etiket ismi, hedef ifadeyi tanımlayan bir etiketin adıdır. Kodumuzun içerisinde, etiket adını aşağıda gösterildiği gibi çift çevreleyen açılı ayraçla çevreleriz.
<<etiket_adi>>;
PLSQL GOTO Kullanımı Örneği
BEGIN GOTO ikinci_mesaj; <<ilk_mesaj>> DBMS_OUTPUT.PUT_LINE( '2. çalışan burası oldu' ); GOTO son_mesaj; <<ikinci_mesaj>> DBMS_OUTPUT.PUT_LINE( 'ilk burası calıştı' ); GOTO ilk_mesaj; <<son_mesaj>> DBMS_OUTPUT.PUT_LINE( 'en son burası çalıştı' ); END;
GOTO Kullanımı örneğimize dikkat edecek olursak. Kod yaramaz bir çocuk gibi bir zıpladığı yerde bir daha zıplamadı. Ya da yavru ceylan gibi sekti de diyebiliriz.
Çıktımız :
ilk burası calıştı
2. çalışan burası oldu
en son burası çalıştı
şeklinde olacaktır.
Kod bloğu normalde yukarıdan aşağı doğru çalışır. Şimdi Begin ifademizden itibaren kod bloğumuzun çalıştığını düşünelim.
ilk olarak GOTO ikinci_mesaj; kodu çalışacaktır ve bir anda <<ikinci_mesaj>> etiketinin ardındaki koddan devam edecektir ve
“ilk burası calıştı ” çıktısını yazdıracaktır.
Ardından GOTO ilk_mesaj; kodu çalışacak ve
“2. çalışan burası oldu” çıktısını yazdıracaktır. Ardından GOTO son_mesaj; kodu ile çalışacak ve <<son_mesaj>> etiketinin hemen ardındaki kod bloğundan çalışmaya devam edip;
“en son burası çalıştı” çıktısını çalıştıracaktır.
PLSQL GOTO Kullanımı kısıtlamaları
GOTO deyimi bazı kısıtlamalara sahipdir. Her koşulda kullanmamıza izin verilmemektedir.
If , case, loop gibi ifadelerin içerisindeki etiketlere dışarıdan ulaşamayız. Bir örnek ile açıklayalım.
DECLARE satislar NUMBER; vergiler NUMBER; BEGIN GOTO inside_if_statement; IF satislar > 0 THEN <<inside_if_statement>> vergiler := satislar * 0.1; END IF; END;
Sonucunda aşağıdaki hatayı alırız.
Goto ifadesini kullanamayacağımız diğer durumları listeleyelim
- PLSQL GOTO deyimini, IF deyiminde, bir ifadeden diğerine, örneğin, IF deyiminden ELSIF veya ELSE deyimine veya bir CASE ifadesi içerisindeki WHEN deyiminden diğerine aktarmak için kullanamazsınız.
- Bir exception içerisindeki etikete gidemeyiz. Ya da bir exception içerisinden dışarıya çıkamayız.
- Bir altprogramdan (function,procedure) diğer bir altprogram içerisine çıkamayız.
<<etiket_adi>> etikekinden sonra en az bir satır kod yazılmış olmalıdır. End ifadesinden hemen önce de kullanılamaz.
Kullanımı pek önerilmez. Önerilmeme sebebi de kod içerisinde kontrolsüz dallanmalara sebep olması ve kod okunurluğunu azaltmasıdır.
Goto ifadesi kullanımı yazımızın sonuna geldik. Daha Faydalı yazılarda görüşmek dileğiyle 🙂
Diğer PLSQL yazılarım için TIKLAYIN.
Diğer bir kaynak için TIKLAYIN.