PL/SQL-Variablenbereich und innerer äußerer Block: Verschachtelte Struktur
⚡ Intelligente Zusammenfassung
Verschachtelte Blöcke in PL/SQL ermöglichen es, komplexe Logik zu trennen und die Ausnahmebehandlung zu isolieren. Durch das Verständnis des Gültigkeitsbereichs von Variablen zwischen äußeren und inneren Blöcken sowie die Verwendung von Blockbezeichnungen wird sichergestellt, dass gleichnamige Variablen eindeutig sind.
Was sind verschachtelte Blöcke? Oracle?
In PL / SQLJeder Block kann in einem anderen Block verschachtelt werden. Ein solcher Block wird als verschachtelter Block bezeichnet. Verschachtelte Blöcke sind sehr häufig, wenn man einen bestimmten Prozess ausführen möchte, während man gleichzeitig einen anderen Block verwendet.ping Der Code für diesen Prozess befindet sich in einem separaten Container (Block).
Das Konzept der verschachtelten Blöcke hilft dem Programmierer, die Lesbarkeit zu verbessern, indem komplexe Logik in einzelne Blöcke unterteilt wird, und ermöglicht es dem Ausnahme Jeder Block muss innerhalb des äußeren Hauptblocks verarbeitet werden.
Verschachtelte Blockstruktur
Ein Block kann in einem anderen Block verschachtelt werden. Dies kann entweder im Ausführungsteil oder im Ausnahmebehandlungsteil erfolgen, und diese Blöcke können auch beschriftet werden. Ein äußerer Block kann mehrere innere Blöcke enthalten. Jeder innere Block ist selbst ein PL/SQL-BlockDaher sind alle Eigenschaften und Merkmale des inneren Blocks identisch mit denen des äußeren Blocks. Der übergeordnete Block ist der Hauptblock, der untergeordnete Block der darin enthaltene Block.
Die Abbildung unten zeigt eine bildliche Darstellung der verschachtelten Blockstruktur, wobei der übergeordnete Block der Hauptblock und der untergeordnete Block der verschachtelte Block ist.
Nachfolgend finden Sie die Syntax für den verschachtelten Block. Der Screenshot unten zeigt die Syntax des verschachtelten Blocks mit seinen beschrifteten äußeren und inneren Blöcken.
Syntax verschachtelter Blöcke
<<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;
- Die obige Syntax zeigt den verschachtelten Block, der insgesamt zwei Blöcke enthält.
- Diese Blöcke sind als „outer_block“ und „inner_block“ bezeichnet.
Bereiche im verschachtelten Block: Variabler Bereich
In verschachtelten Blöcken ist es wichtig, den Geltungsbereich und die Sichtbarkeit jedes einzelnen Blocks genau zu verstehen, bevor man sie verwendet. Insbesondere im inneren Block sind Elemente sowohl des äußeren als auch des inneren Blocks sichtbar, daher ist ein genaues Verständnis dieser Zusammenhänge unerlässlich.
Die folgenden Punkte fassen die Bereiche in verschachtelten Blöcken zusammen.
- Die im äußeren Block deklarierten Elemente und der vor der Definition des inneren Blocks festgelegte Wert sind innerhalb des inneren Blocks sichtbar.
- Die im inneren Block deklarierten Elemente sind im äußeren Block nicht sichtbar. Sie sind nur innerhalb des inneren Blocks sichtbar.
- Der äußere Block und der innere Block können jeweils einen haben. Variable mit dem gleichen Namen.
- Bei Variablen mit gleichem Namen bezieht sich der innere Block standardmäßig nur auf die im inneren Block deklarierte Variable.
- Wenn der innere Block auf eine Variable des äußeren Blocks verweisen möchte, die denselben Namen wie die Variable des inneren Blocks hat, muss der äußere Block mit einem Label versehen werden, und auf die Variable des äußeren Blocks kann dann mit dem Namen „“ verwiesen werden. Die '.
Das folgende Beispiel hilft Ihnen, diese Bereiche besser zu verstehen.
Beispiel 1: In diesem Beispiel sehen wir den Gültigkeitsbereich von Variablen im inneren und äußeren Block. Wir sehen auch, wie man mithilfe einer Blockbezeichnung auf die Variablen zugreift.
Der untenstehende Screenshot zeigt Beispiel 1, in dem der innere Block mithilfe der Blockbezeichnung auf eine Variable des äußeren Blocks verweist.
<<OUTER_BLOCK>> DECLARE var1 VARCHAR2(30):='outer_block'; var2 VARCHAR2(30):='value before inner block'; BEGIN <<INNER_BLOCK>> DECLARE var1 VARCHAR2(30):='inner_block'; BEGIN dbms_output.put_line(var1); dbms_output.put_line(OUTER_BLOCK.var1); dbms_output.put_line(var2); END; var2:='value after inner block'; END; /
Code Erläuterung:
- Code Zeile 1: Der äußere Block wird als „OUTER_BLOCK“ bezeichnet.
- Code Zeile 3: Deklaration einer Variablen 'var1' als VARCHAR2 (30) mit dem Anfangswert "outer_block".
- Code Zeile 4: Deklaration einer Variablen 'var2' als VARCHAR2 (30) mit dem Anfangswert „Wert vor innerem Block“.
- Code Zeile 6: Der innere Block wird als „INNER_BLOCK“ bezeichnet.
- Code Zeile 8: Deklaration einer Variablen 'var1' im inneren Block als VARCHAR2 (30) mit dem Anfangswert "inner_block".
- Code Zeile 10: Der Wert von 'var1' wird ausgegeben. Da keine Bezeichnung angegeben ist, wird standardmäßig der Wert aus dem inneren Block verwendet, wodurch die Meldung 'inner_block' ausgegeben wird.
- Code Zeile 11: Der Wert der äußeren Blockvariable 'var1' wird ausgegeben. Da der innere Block eine Variable mit demselben Namen besitzt, wird auf die Bezeichnung des äußeren Blocks verwiesen. Daher wird die Meldung 'outer_block' ausgegeben.
- Code Zeile 12: Der Wert der äußeren Blockvariable 'var2' wird ausgegeben. Da im inneren Block keine Variable mit diesem Namen existiert, wird standardmäßig der Wert aus dem äußeren Block verwendet, weshalb die Meldung 'Wert vor innerem Block' ausgegeben wird.
- Der Variablen 'var2' im äußeren Block wird der Wert 'Wert nach dem inneren Block' zugewiesen. Diese Zuweisung erfolgt jedoch nach der Definition des inneren Blocks, sodass dieser Wert im inneren Block nicht vorhanden ist.
Beispiel 2: In diesem Beispiel berechnen wir die Differenz zweier Zahlen, eine im äußeren und die andere im inneren Block. Beide haben denselben Namen. Wir sehen uns an, wie die Blockbezeichnung beim Verweisen auf diese Variablen hilfreich ist.
Der untenstehende Screenshot zeigt Beispiel 2, das die Differenz zwischen den äußeren und inneren Blockvariablen mit demselben Namen berechnet.
<<OUTER_BLOCK>> DECLARE ln_val NUMBER :=5; BEGIN <<INNER_BLOCK>> 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; /
Code Erläuterung:
- Code Zeile 1: Der äußere Block wird als „OUTER_BLOCK“ bezeichnet.
- Code Zeile 3: Deklaration einer Variablen 'ln_val' vom Typ NUMBER mit dem Anfangswert „5“.
- Code Zeile 5: Der innere Block wird als „INNER_BLOCK“ bezeichnet.
- Code Zeile 7: Deklaration einer Variablen 'ln_val' im inneren Block als NUMBER mit dem Anfangswert „3“.
- Code Zeile 9: Die Differenz des Wertes von 'ln_val' aus dem äußeren und inneren Block ausgeben. Die Das Format " wird verwendet, um auf diese Variablen zu verweisen und Konflikte aufgrund gleicher Variablennamen zu vermeiden.





