PL/SQL-Variablenbereich und innerer äußerer Block: Verschachtelte Struktur

Was sind verschachtelte Blöcke? Oracle?

In PL/SQL kann jeder Block in einen anderen Block verschachtelt werden. Sie werden als verschachtelter Block bezeichnet. Verschachtelte Blöcke sind sehr häufig, wenn wir einen bestimmten Prozess ausführen möchten und gleichzeitig der Code für diesen Prozess in einem separaten Container (Block) aufbewahrt werden sollte.

Das Konzept verschachtelter Blöcke hilft dem Programmierer, die Lesbarkeit zu verbessern, indem die komplexen Dinge in einzelne Blöcke aufgeteilt werden und die Ausnahme für jeden Block innerhalb des äußeren Hauptblocks behandelt wird.

Verschachtelte Blockstruktur

Ein Block kann in einen anderen Block verschachtelt werden. Dies kann entweder im Ausführungsteil oder im geschachtelt werden Ausnahmebehandlung Teil. Diese Blöcke können auch beschriftet werden. Ein äußerer Block kann viele innere Blöcke enthalten. Jeder innere Block ist noch einmal ein PL/SQL-BlockDaher sind alle Eigenschaften und Eigenschaften des inneren Blocks dieselben wie die des äußeren Blocks. Das folgende Bild zeigt die bildliche Darstellung der verschachtelten Blockstruktur. Der übergeordnete Block ist der Hauptblock und der untergeordnete Block ist der verschachtelte Block.

Verschachtelte Blockstruktur

Nachfolgend finden Sie die Syntax für den verschachtelten Block.

Verschachtelte Blockstruktur

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 werden als „outer_block“ und „inner_block“ bezeichnet.

Bereiche im verschachtelten Block: Variabler Bereich

Bei verschachtelten Blöcken muss man den Umfang und die Sichtbarkeit jedes Blocks genau verstehen, bevor man ihn verwendet. Insbesondere im inneren Block sind die Elemente sowohl des äußeren als auch des inneren Blocks sichtbar. Daher ist ein ordnungsgemäßes Verständnis hierfür erforderlich.

Die folgenden Punkte fassen die Bereiche in verschachtelten Blöcken näher zusammen.

  • Die im äußeren Block deklarierten Elemente und der Wert, der vor der Definition des inneren Blocks definiert wurde, sind im inneren Block sichtbar.
  • Die im inneren Block deklarierten Elemente sind im äußeren Block nicht sichtbar. Sie sind nur innerhalb des inneren Blocks sichtbar.
  • Äußerer Block und innerer Block können eine Variable mit demselben Namen haben.
  • Bei Variablen mit demselben Namen bezieht sich der innere Block standardmäßig nur auf die im inneren Block deklarierte Variable.
  • Wenn der innere Block auf die äußere Blockvariable verweisen möchte, die denselben Namen wie der innere Block hat, sollte der äußere Block mit LABELLED versehen sein und die äußere Blockvariable kann als „ . '

Das folgende Beispiel hilft, mehr über diese Bereiche zu verstehen.

Beispiel 1: In diesem Beispiel sehen wir den Umfang der Variablen im inneren und äußeren Block. Außerdem werden wir sehen, wie man die Variablen mithilfe der Blockbezeichnung referenziert.

Bereiche im verschachtelten Block

<<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;
/

Code-Erklärung:

  • Codezeile 1: Kennzeichnung des äußeren Blocks als „OUTER_BLOCK“.
  • Codezeile 3: Deklarieren einer Variablen „var1“ als VARCHAR2 (30) mit dem Anfangswert „äußerer Block“.
  • Codezeile 4: Deklarieren einer Variablen „var2“ als VARCHAR2 (30) mit dem Anfangswert „Wert vor innerem Block“.
  • Codezeile 6: Den inneren Block als „INNER_BLOCK“ kennzeichnen
  • Codezeile 8: Deklarieren einer Variablen „var1“ im inneren Block als VARCHAR2 (30) mit dem Anfangswert „innerer Block“.
  • Codezeile 10: Drucken des Werts von „var1“. Da standardmäßig keine Bezeichnung angegeben ist, wird der Wert aus einem inneren Block übernommen und daher die Meldung „inner_block“ ausgegeben.
  • Codezeile 11: Drucken des Werts der äußeren Blockvariablen „var1“. Da der innere Block die gleichnamige Variable enthält, müssen wir auf die Beschriftung des äußeren Blocks verweisen. Dadurch wird die Meldung „äußerer Block“ gedruckt.
  • Codezeile 12: Drucken des Werts der äußeren Blockvariablen „var2“. Da im inneren Block keine Variable mit diesem Namen vorhanden ist, wird standardmäßig der Wert von einem äußeren Block übernommen und daher die Meldung „Wert vor innerem Block“ ausgegeben.
  • Der Variablen „var2“ im äußeren Block wurde der Wert „Wert nach innerem Block“ zugewiesen. Diese Zuweisung erfolgte jedoch nach der Definition eines inneren Blocks. Daher ist dieser Wert im inneren Block nicht vorhanden.

Beispiel 2: In diesem Beispiel werden wir die Differenz zwischen zwei Zahlen ermitteln, von denen eine im äußeren Block und die andere im inneren Block deklariert ist. Beide haben den gleichen Namen. Sehen wir uns an, wie nützlich das Blocklabel beim Verweisen auf diese Variablen ist.

Bereiche im verschachtelten Block

<<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;
/

Code-Erklärung:

  • Codezeile 1: Kennzeichnung des äußeren Blocks als „OUTER_BLOCK“.
  • Codezeile 3: Deklarieren einer Variablen „ln_val“ als NUMBER mit dem Anfangswert „5“.
  • Codezeile 5: Den inneren Block als „INNER_BLOCK“ kennzeichnen
  • Codezeile 7: Deklarieren einer Variablen „ln_val“ im inneren Block als NUMBER mit dem Anfangswert „3“.
  • Codezeile 9: Drucken der Wertdifferenz von „ln_val“ zwischen äußerem und innerem Block. Der " . ”-Format wird verwendet, um auf diese Variablen zu verweisen, um Konflikte aufgrund desselben Variablennamens zu vermeiden.

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man einen verschachtelten Block erstellt und wie man mit dem Bereich in inneren und äußeren Blöcken umgeht. Wir haben auch ein Beispiel gesehen, bei dem die Variablen aus dem inneren und äußeren Block innerhalb des inneren Blocks referenziert wurden.