PL/SQL Değişken Kapsamı ve İç Dış Blok: İç İçe Yapı
İç İçe Bloklar Nedir? Oracle?
PL/SQL'de her blok başka bir bloğun içine yerleştirilebilir. Bunlara iç içe geçmiş blok denir. Belirli bir işlemi gerçekleştirmek istediğimizde iç içe bloklar çok yaygındır ve aynı zamanda bu işlemlere ait kodun ayrı bir kapta (blok) tutulması gerekir.
İç içe blok kavramı, programcının karmaşık şeyleri her bir bloğa ayırarak okunabilirliği artırmasına ve her blok için istisnayı ana dış blok içerisinde ele almasına yardımcı olacaktır.
İç İçe Blok Yapısı
Bir blok başka bir bloğun içine yerleştirilebilir. Bu, yürütme kısmında veya istisna işleme parça. Bu bloklar ayrıca etiketlenebilir. Bir dış blok birçok iç blok içerebilir. Her iç blok bir kez daha PL/SQL bloğudolayısıyla iç bloğun tüm özellikleri ve özellikleri dış blokla 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, alt blok ise iç içe geçmiş bloktur.
Aşağıda iç içe bloğun sözdizimi verilmiştir.
İç İçe Blok Söz Dizimi
<<outer_block>> DECLARE <Declarative section> BEGIN <Execution part for outer block begins> <<inner block>> DECLARE <Declarative section> BEGIN <Execution part for inner block>. EXCEPTION <Exception handling part> END; <Execution part for outer block begins> EXCEPTION <Exception handling part> END;
- Yukarıdaki sözdizimi, toplam iki blok içeren iç içe bloğu gösterir.
- Bu bloklar 'outer_block' ve 'inner_block' olarak etiketlenmiştir.
İç İçe Bloktaki Kapsamlar: Değişken Kapsam
Yuvalanmış blokta, her bloğu kullanmadan önce kapsamını ve görünürlüğünü açıkça anlamak gerekir. Özellikle iç blokta hem dış hem de iç bloğun elemanları görünür olacaktır, dolayısıyla bunun doğru anlaşılması gerekmektedir.
Aşağıdaki noktalar, iç içe geçmiş bloklardaki kapsamlarla ilgili daha fazla özetleyecektir.
- Dış blokta bildirilen elemanlar ve iç blok tanımından önce tanımlanan değer iç bloğun içinde görünür.
- İç blokta tanımlanan öğeler dış blokta görünmez. Yalnızca iç bloğun içinde görülebilirler.
- Dış blok ve İç blok aynı adda 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 atıfta bulunacaktır.
- İç blok, iç blokla aynı adı taşıyan dış blok değişkenine atıfta bulunmak istiyorsa, dış blok ETİKETLENMELİ ve dış blok değişkeni ' olarak adlandırılabilir. . '
Aşağıdaki örnek bu kapsamlar hakkında daha fazla bilgi edinmenize yardımcı olacaktır.
Örnek 1: Bu örnekte iç ve dış bloktaki değişkenlerin kapsamını göreceğiz. Ayrıca blok etiketini kullanarak değişkenlere nasıl atıfta bulunacağımızı da göreceğiz.
<<OUTER_BLOC>> DECLARE varl VARCHAR2(30):='outer_block'; var2 VARCHAR2(30):='value before inner block’; BEGIN <<NNER_BLOCK>> DECLARE varl VARCHAR2(30):='inner_block'; BEGIN dbms_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ğun “OUTER_BLOCK” olarak etiketlenmesi.
- Kod satırı 3: 'var1' değişkeninin başlangıç değeri “dış blok” ile VARCHAR2 (30) olarak bildirilmesi.
- Kod satırı 4: 'var2' değişkeninin başlangıç değeri “iç bloktan önceki değer” ile VARCHAR2 (30) olarak bildirilmesi.
- Kod satırı 6: İç bloğun “INNER_BLOCK” olarak etiketlenmesi
- Kod satırı 8: İç blokta bir 'var1' değişkeninin başlangıç değeri “inner blok” ile VARCHAR2 (30) olarak bildirilmesi.
- Kod satırı 10: 'var1'in değeri yazdırılıyor. Varsayılan olarak hiçbir etiket belirtilmediğinden, değeri bir iç bloktan alır, dolayısıyla 'inner_block' mesajını yazdırır.
- Kod satırı 11: Dış blok değişkeni 'var1'in değeri yazdırılıyor. İç blok aynı isimde değişkene sahip olduğundan dış blok etiketine başvurmamız gerekir. Böylece 'dış blok' mesajı yazdırılır.
- Kod satırı 12: Dış blok değişkeni 'var2'nin değeri yazdırılıyor. İç blokta bu isimde bir değişken bulunmadığından, varsayılan olarak değeri dış bloktan alır, dolayısıyla 'iç bloktan önceki değer' mesajını yazdırı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şmiştir. 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. İkisi de aynı isme sahip olacak. Bu değişkenlere atıfta bulunmada blok etiketinin ne kadar yararlı olduğunu görelim.
<<OUTER_BLOC>> DECLARE ln_val NUMBER :=5; BEGIN <<INNERBLOC>> DECLARE ln_val NUMBER :=3; BEGIN dbms_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ğun “OUTER_BLOCK” olarak etiketlenmesi.
- Kod satırı 3: 'ln_val' değişkeninin başlangıç değeri “5” olan NUMBER olarak bildirilmesi.
- Kod satırı 5: İç bloğun “INNER_BLOCK” olarak etiketlenmesi
- Kod satırı 7: 'ln_val' değişkenini iç blokta başlangıç değeri “3” olan NUMBER olarak bildirmek.
- Kod satırı 9: 'ln_val' değerindeki farkın dış ve iç bloktan yazdırılması. “ . Aynı değişken adından kaynaklanan çakışmaları önlemek amacıyla bu değişkenlere atıfta bulunmak için ” formatı kullanılır.
ÖZET
Bu derste, iç içe blok oluşturmayı ve kapsamın iç blok ve dış bloklarda nasıl ele alınacağını öğrendik. Ayrıca iç ve dış bloktaki değişkenlerin iç bloğun içinde yönlendirildiği bir örnek de gördük.