PL / SQL varijabilni opseg & Unutarnji vanjski blok: ugniježđena struktura

Sadržaj:

Anonim

Što je ugniježđeni blok Oracle?

U PL / SQL-u svaki blok može biti ugniježđen u drugi blok. Oni se nazivaju ugniježđenim blokom. Ugnježđeni blokovi su vrlo česti kad želimo izvršiti određeni postupak, a istodobno bi se kôd tih procesa trebao čuvati u zasebnom spremniku (bloku).

Koncept ugniježđenog bloka pomoći će programeru da poboljša čitljivost razdvajanjem složenih stvari u svaki blok i obrađivanjem iznimke za svaki blok unutar glavnog vanjskog bloka.

U ovom vodiču naučit ćete-

  • Struktura ugniježđenog bloka
  • Opsezi u ugniježđenom bloku: Promjenjivi opseg

Struktura ugniježđenog bloka

Blok se može ugnijezditi u drugi blok. To se može ugnijezditi ili u izvršnom dijelu ili u dijelu za rukovanje iznimkama. Ovi blokovi također mogu biti označeni. Jedan vanjski blok može sadržavati mnogo unutarnjih blokova. Svaki unutarnji blok je opet PL / SQL blok, stoga će sva svojstva i karakteristike unutarnjeg bloka biti jednaka vanjskom bloku. Slika dolje daje slikovni prikaz ugniježđene blokovske strukture. Nadređeni blok je glavni blok, a podređeni blok je ugniježđeni blok.

Ispod je sintaksa ugniježđenog bloka.

Sintaksa ugniježđenih blokova

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Gornja sintaksa prikazuje ugniježđeni blok koji sadrži ukupno dva bloka.
  • Ti su blokovi označeni kao 'external_block' i 'inner_block'

Opsezi u ugniježđenom bloku: Promjenjivi opseg

U ugniježđenom bloku prije razumijevanja treba jasno razumjeti opseg i vidljivost svakog bloka. Osobito u unutarnjem bloku, bit će vidljivi elementi i iz vanjskog i iz unutarnjeg bloka, pa je stoga potrebno pravilno razumijevanje toga.

Ispod će se sažeti više o opsezima u ugniježđenim blokovima.

  • Elementi deklarirani u vanjskom bloku i vrijednost koja je definirana prije definiranja unutarnjeg bloka vidljivi su unutar unutarnjeg bloka.
  • Elementi deklarirani u unutarnjem bloku nisu vidljivi u vanjskom bloku. Vidljivi su samo unutar unutarnjeg bloka.
  • Vanjski blok i unutarnji blok mogu imati varijablu s istim imenom.
  • U slučaju varijabli s istim imenom, unutarnji blok prema zadanim postavkama odnosit će se samo na varijablu deklariranu u unutarnjem bloku.
  • Ako unutarnji blok želi uputiti vanjsku varijablu bloka koja ima isto ime kao i ona unutarnjeg bloka, tada bi vanjski blok trebao biti OZNAČEN, a vanjska varijabla bloka može se nazivati ​​'. '

Primjer u nastavku pomoći će vam da razumijete više o tim opsezima.

Primjer 1 : U ovom ćemo primjeru vidjeti opseg varijabli u unutarnjem i vanjskom bloku. Također ćemo vidjeti kako uputiti varijable pomoću oznake bloka.

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

Objašnjenje koda:

  • Redak koda 1 : Označavanje vanjskog bloka kao "OUTER_BLOCK".
  • Redak koda 3 : Deklariranje varijable 'var1' kao VARCHAR2 (30) s početnom vrijednošću "vanjskog bloka".
  • Redak koda 4 : Deklariranje varijable 'var2' kao VARCHAR2 (30) s početnom vrijednošću "vrijednost prije unutarnjeg bloka".
  • Redak koda 6: Označavanje unutarnjeg bloka kao "INNER_BLOCK"
  • Redak koda 8: Deklariranje varijable 'var1' u unutarnjem bloku kao VARCHAR2 (30) s početnom vrijednošću "unutarnji blok".
  • Redak koda 10: Ispis vrijednosti 'var1'. Budući da se nijedna naljepnica ne spominje prema zadanim postavkama, ona će uzeti vrijednost iz unutarnjeg bloka, dakle ispis poruke "inner_block".
  • Redak koda 11: Ispis vrijednosti vanjske varijable bloka 'var1'. Budući da unutarnji blok ima varijablu s istim imenom, moramo se pozvati na vanjsku oznaku bloka. Tako se ispisuje poruka 'vanjski blok'.
  • Redak koda 12: Ispis vrijednosti varijable vanjskog bloka 'var2'. Budući da u unutarnjem bloku nema varijable s ovim imenom, prema zadanim postavkama ona će vrijednost uzeti iz vanjskog bloka, dakle ispis poruke "vrijednost prije unutarnjeg bloka".
  • Varijabli 'var2' u vanjskom bloku dodijeljena je vrijednost 'vrijednost nakon unutarnjeg bloka'. Ali ovaj se zadatak dogodio nakon definicije unutarnjeg bloka. Stoga ova vrijednost nije prisutna u unutarnjem bloku.

Primjer 2 : U ovom ćemo primjeru pronaći razliku između dva broja, jednog deklariranog na vanjskom bloku i drugog na unutarnjem bloku. Oboje će imati isto ime. Pogledajmo kako je oznaka bloka korisna u upućivanju na ove varijable.

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

Objašnjenje koda:

  • Redak koda 1 : Označavanje vanjskog bloka kao "OUTER_BLOCK".
  • Redak koda 3 : Deklariranje varijable 'ln_val' kao BROJ s početnom vrijednošću "5".
  • Redak koda 5: Označavanje unutarnjeg bloka kao "INNER_BLOCK"
  • Redak koda 7: Deklariranje varijable 'ln_val' u unutarnjem bloku kao BROJ s početnom vrijednošću "3".
  • Redak koda 9: Ispis razlike u vrijednosti 'ln_val' s vanjskog i unutarnjeg bloka. Format ". " koristi se za upućivanje na ove varijable kako bi se izbjegli sukobi zbog istog imena varijable.

Sažetak

U ovom uputstvu naučili smo kako stvoriti ugniježđeni blok i kako rukovati opsegom u unutarnjem i vanjskom bloku. Također smo vidjeli primjer gdje su varijable iz unutarnjeg i vanjskog bloka upućene unutar unutarnjeg bloka.