İç İçe Bloklar Oracle nedir?
PL / SQL'de her blok başka bir bloğun içine yerleştirilebilir. İç içe geçmiş blok olarak adlandırılırlar. İç içe geçmiş bloklar, belirli bir işlemi gerçekleştirmek istediğimizde çok yaygındır ve aynı zamanda bu işlemlerin kodu ayrı bir kapta (blok) tutulmalıdır.
İç içe geçmiş blok kavramı, programcının karmaşık şeyleri her bloğa ayırarak okunabilirliği geliştirmesine ve ana dış blok içindeki her blok için istisnayı ele almasına yardımcı olacaktır.
Bu eğitimde öğreneceksiniz-
- İç İçe Blok Yapısı
- İç İçe Bloktaki Kapsamlar: Değişken Kapsam
İç İçe Blok Yapısı
Bir blok başka bir bloğun içine yerleştirilebilir. Bu, yürütme bölümünde veya istisna işleme bölümünde yuvalanabilir. Bu bloklar ayrıca etiketlenebilir. Bir dış blok birçok iç blok içerebilir. Her iç blok bir kez daha bir PL / SQL bloğudur, dolayısıyla iç bloğun tüm özellikleri ve özellikleri dış blok ile aynı olacaktır. Aşağıdaki görüntü, iç içe geçmiş blok yapısının resimli temsilini vermektedir. Ana blok, ana blok ve alt blok, iç içe bloktur.
Aşağıda iç içe blok için sözdizimi verilmiştir.
İç içe geçmiş blok söz dizimi
<>DECLARE BEGIN < >DECLARE BEGIN .EXCEPTION END; EXCEPTION END;
- Yukarıdaki sözdizimi, toplam iki blok içeren iç içe geçmiş bloğu gösterir.
- Bu bloklar 'dış_blok' ve 'iç_blok' olarak etiketlenir.
İç İçe Bloktaki Kapsamlar: Değişken Kapsam
İç içe geçmiş blokta, kullanmadan önce her bloğun kapsamını ve görünürlüğünü açıkça anlamak gerekir. Özellikle iç blokta, hem dış hem de iç bloktaki elemanlar görünür olacaktır, bu nedenle bunun doğru anlaşılması gereklidir.
Aşağıdaki noktalar, iç içe geçmiş bloklardaki kapsamlarla ilgili daha fazla bilgi verecektir.
- Dış blokta bildirilen elemanlar ve iç blok tanımından önce tanımlanan değer, iç blok içinde görünür.
- İç blokta beyan edilen elemanlar dış blokta görünmez. Yalnızca iç blokta görülebilirler.
- Dış blok ve İç blok aynı ada sahip bir değişkene sahip olabilir.
- Aynı ada sahip değişkenler olması durumunda, varsayılan olarak iç blok, yalnızca iç blokta bildirilen değişkene başvurur.
- İç blok, iç bloğunki ile aynı adı taşıyan dış blok değişkenine başvurmak istiyorsa, dış blok ETİKETLENMELİDİR ve dış blok değişkeni '
olarak adlandırılabilir. '
Aşağıdaki örnek, bu kapsamlar hakkında daha fazla bilgi edinmeye yardımcı olacaktır.
Örnek 1 : Bu örnekte, iç ve dış bloktaki değişkenlerin kapsamını göreceğiz. Ayrıca, blok etiketi kullanarak değişkenlere nasıl atıfta bulunacağımızı göreceğiz.
<>DECLAREvarl VARCHAR2(30):='outer_block';var2 VARCHAR2(30):='value before inner block’;BEGIN< >DECLAREvarl VARCHAR2(30):='inner_block';BEGINdbms_output.put_line(varl), dbms_output.put_line(OUTER_BLOCKvar1);dbms_output.put_line(var2);END;var2:='value after inner block';END;/
Kod Açıklaması:
- Kod satırı 1 : Dış bloğu "OUTER_BLOCK" olarak etiketleme.
- Kod satırı 3 : Bir "var1" değişkenini "dış bloğun" başlangıç değeri ile VARCHAR2 (30) olarak ilan etme.
- Kod satırı 4 : "var2" değişkenini "iç bloktan önceki değer" başlangıç değeriyle VARCHAR2 (30) olarak ilan etme.
- Kod satırı 6: İç bloğu "INNER_BLOCK" olarak etiketleme
- Kod satırı 8: İç bloktaki bir 'var1' değişkenini "iç blok" başlangıç değeri ile VARCHAR2 (30) olarak ilan etmek.
- Kod satırı 10: 'var1'in değerini yazdırma. Varsayılan olarak herhangi bir etiket belirtilmediğinden, değeri bir iç bloktan alacak, dolayısıyla 'iç_blok' mesajı yazdırılacaktır.
- Kod satırı 11: Dış blok değişkeni 'var1'in değerini yazdırma. İç blok aynı isimli değişkene sahip olduğundan, dış blok etiketine bakmamız gerekir. Böylece 'dış blok' mesajı yazdırılır.
- Kod satırı 12: Dış blok değişkeni 'var2'nin değerini yazdırma. İç blokta bu isimde bir değişken olmadığından, varsayılan olarak değeri bir dış bloktan alacak, dolayısıyla 'iç bloktan önceki değer' mesajı yazdırılacaktır.
- Dış bloktaki 'var2' değişkenine 'iç bloktan sonraki değer' değeri atanmıştır. Ancak bu atama, bir iç bloğun tanımlanmasından sonra gerçekleşti. Dolayısıyla bu değer iç blokta mevcut değildir.
Örnek 2 : Bu örnekte, biri dış blokta, diğeri iç blokta bildirilen iki sayı arasındaki farkı bulacağız. Her ikisi de aynı ada sahip olacak. Bu değişkenlere atıfta bulunmada blok etiketinin nasıl yararlı olduğunu görelim.
<>DECLAREln_val NUMBER :=5;BEGIN< >DECLAREln_val NUMBER :=3;BEGINdbms_output.put_line(The difference between outer block and inner block variable is:'||' outer_block. ln_val-inner_block.ln_val);END;END;/
Kod Açıklaması:
- Kod satırı 1 : Dış bloğu "OUTER_BLOCK" olarak etiketleme.
- Kod satırı 3 : Bir değişken 'ln_val', başlangıç değeri "5" olan NUMBER olarak bildirilir.
- Kod satırı 5: İç bloğu "INNER_BLOCK" olarak etiketleme
- Kod satırı 7: İç bloktaki bir 'ln_val' değişkenini başlangıç değeri "3" olan NUMBER olarak bildirmek.
- Kod satırı 9: Dış ve iç bloktan 'ln_val' değerindeki farkı yazdırmak "
. " biçimi, aynı değişken adından kaynaklanan çakışmaları önlemek için bu değişkenlere atıfta bulunmak için kullanılır.
Özet
Bu eğitimde, iç içe geçmiş bir bloğun nasıl oluşturulacağını ve kapsamın iç blok ve dış bloklarda nasıl ele alınacağını öğrendik. İç ve dış bloktan gelen değişkenlerin iç bloğun içine yönlendirildiği bir örnek de gördük.