Domeniu de aplicare a variabilei PL/SQL și bloc interior exterior: structură imbricată

Ce este blocurile imbricate Oracle?

În PL/SQL, fiecare bloc poate fi imbricat într-un alt bloc. Acestea sunt denumite blocuri imbricate. Blocurile imbricate sunt foarte frecvente atunci când dorim să efectuăm un anumit proces și, în același timp, codul pentru aceste procese ar trebui păstrat într-un container (bloc) separat.

Conceptul de bloc imbricat va ajuta programatorul să îmbunătățească lizibilitatea prin separarea lucrurilor complexe în fiecare bloc și să gestioneze excepția pentru fiecare bloc din interiorul blocului exterior principal.

Structură bloc imbricată

Un bloc poate fi imbricat într-un alt bloc. Acesta poate fi imbricat fie în partea de execuție, fie în manipularea excepțiilor parte. Aceste blocuri pot fi, de asemenea, etichetate. Un bloc exterior poate conține multe blocuri interioare. Fiecare bloc interior este din nou a bloc PL/SQL, prin urmare toate proprietățile și caracteristicile blocului interior vor fi aceleași cu cele ale blocului exterior. Imaginea de mai jos oferă o reprezentare picturală a structurii blocurilor imbricate. Blocul părinte este blocul principal și blocul copil este blocul imbricat.

Structură bloc imbricată

Mai jos este sintaxa pentru blocul imbricat.

Structură bloc imbricată

Sintaxa blocului imbricat

<<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;
  • Sintaxa de mai sus arată blocul imbricat care conține în total două blocuri.
  • Aceste blocuri sunt etichetate ca „bloc_exterior” și „bloc_interior”

Domenii în bloc imbricat: Domeniu variabil

În blocul imbricat, trebuie să înțelegeți în mod clar domeniul de aplicare și vizibilitatea fiecărui bloc înainte de a le folosi. În special în blocul interior, elementele atât din exterior, cât și din interior vor fi vizibile, de aceea este necesară înțelegerea corectă a acestui lucru.

Punctele de mai jos vor rezuma mai multe cu privire la domeniile din blocurile imbricate.

  • Elementele declarate în blocul exterior și valoarea care este definită înainte de definiția blocului interior sunt vizibile în interiorul blocului interior.
  • Elementele declarate în blocul interior nu sunt vizibile în blocul exterior. Ele sunt vizibile numai în blocul interior.
  • Blocul exterior și blocul interior pot avea o variabilă cu același nume.
  • În cazul variabilelor cu același nume, blocul interior în mod implicit se va referi la variabila declarată numai în blocul interior.
  • Dacă blocul interior dorește să facă referire la variabila bloc exterior care are același nume cu cel al blocului interior, atunci blocul exterior ar trebui să fie Etichetat, iar variabila bloc exterior poate fi denumită „ . '

Exemplul de mai jos vă va ajuta să înțelegeți mai multe despre aceste domenii.

Exemplu 1: În acest exemplu, vom vedea domeniul de aplicare al variabilelor din blocul interior și exterior. De asemenea, vom vedea cum să trimitem variabilele folosind eticheta blocului.

Domenii în bloc imbricat

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

Explicația codului:

  • Linia de cod 1: Etichetarea blocului exterior ca „OUTER_BLOCK”.
  • Linia de cod 3: Declararea unei variabile „var1” ca VARCHAR2 (30) cu valoarea inițială a „bloc exterior”.
  • Linia de cod 4: Declararea unei variabile „var2” ca VARCHAR2 (30) cu valoarea inițială „valoare înainte de blocul interior”.
  • Linia de cod 6: Etichetarea blocului interior ca „INNER_BLOCK”
  • Linia de cod 8: Declararea unei variabile „var1” în blocul interior ca VARCHAR2 (30) cu valoarea inițială a „bloc interior”.
  • Linia de cod 10: Se imprimă valoarea lui „var1”. Deoarece nicio etichetă nu este menționată în mod implicit, va lua valoarea dintr-un bloc interior, prin urmare se va tipări mesajul „inner_block”.
  • Linia de cod 11: Se imprimă valoarea variabilei blocului exterior „var1”. Deoarece blocul interior are variabila cu același nume, trebuie să ne referim la eticheta blocului exterior. Se imprimă astfel mesajul „bloc exterior”.
  • Linia de cod 12: Se imprimă valoarea variabilei blocului exterior „var2”. Deoarece nu există nicio variabilă cu acest nume prezentă în blocul interior, în mod implicit va lua valoarea dintr-un bloc exterior, prin urmare se va tipări mesajul „valoare înainte de blocul interior”.
  • Variabila „var2” din blocul exterior a fost atribuită cu valoarea „valoare după blocul interior”. Dar această atribuire a avut loc după definirea unui bloc interior. Prin urmare, această valoare nu este prezentă în blocul interior.

Exemplu 2: În acest exemplu, vom găsi diferența dintre două numere, unul declarat la blocul exterior și altul la blocul interior. Ambele vor avea același nume. Să vedem cum este utilă eticheta blocului în referirea acestor variabile.

Domenii în bloc imbricat

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

Explicația codului:

  • Linia de cod 1: Etichetarea blocului exterior ca „OUTER_BLOCK”.
  • Linia de cod 3: Declararea unei variabile „ln_val” ca NUMĂR cu valoarea inițială „5”.
  • Linia de cod 5: Etichetarea blocului interior ca „INNER_BLOCK”
  • Linia de cod 7: Declararea unei variabile „ln_val” în blocul interior ca NUMĂR cu valoarea inițială „3”.
  • Linia de cod 9: Imprimarea diferenței de valoare a lui „ln_val” de la blocul exterior și interior. „ . ” este folosit pentru a trimite aceste variabile pentru a evita conflictele datorate aceluiași nume de variabilă.

Rezumat

În acest tutorial, am învățat cum să creăm un bloc imbricat și cum să gestionăm domeniul de aplicare în blocurile interior și blocurile exterioare. Am văzut, de asemenea, un exemplu în care variabilele din blocul interior și exterior au fost menționate în interiorul blocului interior.

Rezumați această postare cu: