Čo je vnorené bloky Oracle?
V PL / SQL môže byť každý blok vnorený do iného bloku. Označujú sa ako vnorený blok. Vnorené bloky sú veľmi časté, ak chceme vykonať určitý proces, a zároveň by sa mal kód týchto procesov uchovávať v samostatnom kontajneri (bloku).
Koncept vnoreného bloku pomôže programátorovi zlepšiť čitateľnosť rozdelením zložitých vecí do každého bloku a zvládnuť výnimku pre každý blok vnútri hlavného vonkajšieho bloku.
V tomto návode sa naučíte
- Vnorená bloková štruktúra
- Rozsahy vnoreného bloku: variabilný rozsah
Vnorená bloková štruktúra
Blok je možné vložiť do iného bloku. To je možné vnoriť buď do časti na vykonávanie, alebo do časti na spracovanie výnimiek. Tieto bloky môžu byť tiež označené. Jeden vonkajší blok môže obsahovať veľa vnútorných blokov. Každý vnútorný blok je opäť blokom PL / SQL, takže všetky vlastnosti a vlastnosti vnútorného bloku budú rovnaké ako vonkajší blok. Nasledujúci obrázok poskytuje obrazové znázornenie vnorenej blokovej štruktúry. Nadradený blok je hlavný blok a podradený blok je vnorený blok.
Nižšie je uvedená syntax pre vnorený blok.
Syntax vnoreného bloku
<>DECLARE BEGIN < >DECLARE BEGIN .EXCEPTION END; EXCEPTION END;
- Vyššie uvedená syntax zobrazuje vnorený blok, ktorý obsahuje celkom dva bloky.
- Tieto bloky sú označené ako „outer_block“ a „internal_block“
Rozsahy vnoreného bloku: variabilný rozsah
Vo vnorenom bloku musíte pred použitím jasne porozumieť rozsahu a viditeľnosti každého bloku. Najmä vo vnútornom bloku budú viditeľné prvky z vonkajšieho aj z vnútorného bloku, preto je potrebné ich správne pochopiť.
Ďalej uvedené body zhrnú viac týkajúce sa rozsahov vo vnorených blokoch.
- Prvky deklarované vo vonkajšom bloku a hodnota, ktorá je definovaná pred definíciou vnútorného bloku, sú viditeľné vo vnútri vnútorného bloku.
- Prvky deklarované vo vnútornom bloku nie sú vo vonkajšom bloku viditeľné. Sú viditeľné iba vo vnútornom bloku.
- Vonkajší blok a vnútorný blok môžu mať premennú s rovnakým názvom.
- V prípade premenných s rovnakým názvom bude vnútorný blok predvolene odkazovať na premennú deklarovanú iba vo vnútornom bloku.
- Ak vnútorný blok chce odkázať na premennú vonkajšieho bloku, ktorá má rovnaký názov ako ten vo vnútornom bloku, potom by vonkajší blok mal byť OZNAČENÝ a premenná vonkajšieho bloku môže byť označená ako „
. “
Nasledujúci príklad pomôže pochopiť viac o týchto oblastiach.
Príklad 1 : V tomto príklade uvidíme rozsah premenných vo vnútornom a vonkajšom bloku. Ďalej sa dozvieme, ako odkazovať na premenné pomocou označenia bloku.
<>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;/
Vysvetlenie kódu:
- Riadok kódu 1 : Označenie vonkajšieho bloku ako „OUTER_BLOCK“.
- Riadok kódu 3 : Deklarovanie premennej „var1“ ako VARCHAR2 (30) s počiatočnou hodnotou „vonkajšieho bloku“.
- Riadok kódu 4 : Deklarovanie premennej „var2“ ako VARCHAR2 (30) s počiatočnou hodnotou „hodnota pred vnútorným blokom“.
- Riadok kódu 6: Označenie vnútorného bloku ako „INNER_BLOCK“
- Riadok kódu 8: Deklarovanie premennej „var1“ vo vnútornom bloku ako VARCHAR2 (30) s počiatočnou hodnotou „vnútorný blok“.
- Riadok kódu 10: Tlač hodnoty „var1“. Pretože v predvolenom nastavení nie je uvedený žiadny štítok, bude mať hodnotu z vnútorného bloku, a preto sa vytlačí správa „internal_block“.
- Riadok kódu 11: Tlač hodnoty premennej vonkajšieho bloku „var1“. Pretože vnútorný blok obsahuje premennú s rovnakým názvom, musíme sa odvolať na štítok vonkajšieho bloku. Vytlačí sa teda správa „vonkajší blok“.
- Riadok kódu 12: Tlač hodnoty premennej vonkajšieho bloku „var2“. Pretože vo vnútornom bloku nie je žiadna premenná s týmto názvom, predvolene bude brať hodnotu z vonkajšieho bloku, a preto vytlačí správu „hodnota pred vnútorným blokom“.
- Premennej „var2“ vo vonkajšom bloku bola priradená hodnota „hodnota za vnútorným blokom“. Ale toto priradenie sa stalo po definovaní vnútrobloku. Preto táto hodnota nie je vo vnútornom bloku prítomná.
Príklad 2 : V tomto príklade nájdeme rozdiel medzi dvoma číslami, jedným deklarovaným na vonkajšom bloku a druhým na vnútornom bloku. Oba budú mať rovnaké meno. Pozrime sa, ako je označenie bloku užitočné pri odkazovaní na tieto premenné.
<>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;/
Vysvetlenie kódu:
- Riadok kódu 1 : Označenie vonkajšieho bloku ako „OUTER_BLOCK“.
- Riadok kódu 3 : Deklarovanie premennej „ln_val“ ako ČÍSLA s počiatočnou hodnotou „5“.
- Riadok kódu 5: Označenie vnútorného bloku ako „INNER_BLOCK“
- Riadok kódu 7: Deklarovanie premennej „ln_val“ vo vnútornom bloku ako ČÍSLO s počiatočnou hodnotou „3“.
- Riadok kódu 9: Tlač rozdielu v hodnote „ln_val“ z vonkajšieho a vnútorného bloku. Na označenie týchto premenných sa používa formát „
. “, aby sa zabránilo konfliktom v dôsledku rovnakého názvu premennej.
Zhrnutie
V tomto tutoriáli sme sa naučili, ako vytvoriť vnorený blok a ako zvládnuť rozsah vo vnútornom bloku a vonkajších blokoch. Videli sme aj príklad, keď sa premenné z vnútorného a vonkajšieho bloku odkazovali do vnútra vnútorného bloku.