Ce este Oracle Nocks Blocks?
În PL / SQL, fiecare bloc poate fi cuibărit într-un alt bloc. Sunt denumiți ca un bloc imbricat. Blocurile imbricate sunt foarte frecvente atunci când vrem să efectuăm un anumit proces și, în același timp, codul pentru acest proces trebuie păstrat într-un container separat (bloc).
Conceptul de bloc imbricat îl va ajuta pe programator să îmbunătățească lizibilitatea separând lucrurile complexe în fiecare bloc și să gestioneze excepția pentru fiecare bloc din blocul principal principal.
În acest tutorial, veți învăța-
- Structura blocului imbricat
- Domeniile de aplicare în blocul imbricat: domeniul de aplicare variabil
Structura blocului imbricat
Un bloc poate fi cuibărit într-un alt bloc. Acest lucru poate fi imbricat fie în partea de execuție, fie în partea de tratare a excepțiilor. Aceste blocuri pot fi, de asemenea, etichetate. Un bloc exterior poate conține multe blocuri interioare. Fiecare bloc interior este din nou un bloc PL / SQL, prin urmare toate proprietățile și caracteristicile blocului interior vor fi aceleași ca blocul exterior. Imaginea de mai jos oferă reprezentarea picturală a structurii blocului imbricat. Blocul părinte este blocul principal, iar blocul copil este blocul imbricat.
Mai jos este sintaxa blocului imbricat.
Sintaxa blocului imbricat
<>DECLARE BEGIN < >DECLARE BEGIN .EXCEPTION END; EXCEPTION END;
- Sintaxa de mai sus arată blocul imbricat care conține în total două blocuri.
- Aceste blocuri sunt etichetate ca „exterior_bloc” și „interior_bloc”
Domeniile de aplicare în blocul imbricat: domeniul de aplicare variabil
În blocul imbricat, trebuie să înțelegeți întinderea și vizibilitatea fiecărui bloc înainte de a le utiliza. În special în blocul interior, elementele din blocul exterior și interior vor fi vizibile, de aceea este necesară înțelegerea corectă a acestui lucru.
Punctele de mai jos vor rezuma mai multe despre scopurile din blocurile imbricate.
- Elementele declarate în blocul exterior și valoarea definită înainte ca definiția blocului interior să fie vizibile în interiorul blocului interior.
- Elementele declarate în blocul interior nu sunt vizibile în blocul exterior. Ele sunt vizibile numai în interiorul blocului interior.
- Blocul exterior și blocul interior pot avea o variabilă cu același nume.
- În cazul variabilelor cu același nume, blocul interior implicit se va referi doar la variabila declarată în blocul interior.
- Dacă blocul interior dorește să trimită variabila blocului exterior care poartă același nume cu cel al blocului interior, atunci blocul exterior ar trebui să fie LABELED, iar variabila blocului exterior poate fi denumită „
. ”
Exemplul de mai jos vă va ajuta să înțelegeți mai multe despre aceste domenii.
Exemplul 1 : În acest exemplu, vom vedea sfera variabilelor în blocul interior și exterior. De asemenea, vom vedea cum să trimitem variabilele folosind eticheta de bloc.
<>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;/
Explicatie cod:
- 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 „blocului 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 „blocului interior”.
- Linia de cod 10: Tipărirea valorii „var1”. Deoarece nici o etichetă nu este menționată în mod implicit, aceasta va prelua valoarea dintr-un bloc interior, prin urmare imprimând mesajul „inner_block”.
- Linia de cod 11: Tipărirea valorii variabilei blocului exterior „var1”. Deoarece blocul interior are variabila cu același nume, trebuie să ne referim la eticheta blocului exterior. Imprimând astfel mesajul „bloc exterior”.
- Linia de cod 12: Tipărirea valorii variabilei blocului exterior „var2”. Deoarece nu există nicio variabilă cu acest nume prezentă în blocul interior, în mod implicit va prelua valoarea dintr-un bloc exterior, prin urmare imprimând mesajul „valoare înainte de blocul interior”.
- Variabila „var2” din blocul exterior a fost atribuită cu valoarea „valoare după blocul interior”. Dar această atribuire s-a întâmplat după definirea unui bloc interior. Prin urmare, această valoare nu este prezentă în blocul interior.
Exemplul 2 : În acest exemplu, vom găsi diferența dintre două numere, una declarată la blocul exterior și alta la blocul interior. Ambele vor avea același nume. Să vedem cum este utilă eticheta blocului în referirea acestor variabile.
<>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;/
Explicatie cod:
- 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: Tipărirea diferenței de valoare a 'ln_val' din blocul exterior și interior. Formatul „
. ” este utilizat 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 scopul în blocurile interioare și exterioare. De asemenea, am văzut un exemplu în care variabilele din blocul interior și exterior au fost menționate în interiorul blocului interior.