PLSQL GOTO Kullanımı (Eğitici) | PLSQL Nedir ? | 6

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>>;
GOTO ifadesiyle karşılaştığında, kontrolü etiketten sonraki ilk çalıştırılabilir ifadeye aktarır. Yani aslında etikete aktarır ve etiketin altındaki kod satırından çalışmaya devam eder.

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.

PLSQL GOTO Kullanımı
PLSQL GOTO Kullanımı

 

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.