Kas yra „Nested Blocks Oracle“?
PL / SQL kiekvienas blokas gali būti įdėtas į kitą bloką. Jie vadinami įdėtu bloku. Įterpti blokai yra labai dažni, kai norime atlikti tam tikrą procesą, tuo pačiu metu šio proceso kodas turėtų būti laikomas atskirame konteineryje (bloke).
Įdėta bloko koncepcija padės programuotojui pagerinti įskaitomumą, atskiriant sudėtingus dalykus į kiekvieną bloką ir tvarkant kiekvieno bloko išimtį pagrindinio išorinio bloko viduje.
Šioje pamokoje sužinosite
- Įdėta bloko struktūra
- Taikymo sritis įdėtame bloke: kintama sritis
Įdėta bloko struktūra
Blokas gali būti įdėtas į kitą bloką. Tai gali būti įdėta vykdymo dalyje arba išimčių tvarkymo dalyje. Šie blokai taip pat gali būti pažymėti etiketėmis. Viename išoriniame bloke gali būti daug vidinių blokų. Kiekvienas vidinis blokas vėl yra PL / SQL blokas, taigi visos vidinio bloko savybės ir charakteristikos bus tokios pačios kaip išorinio bloko. Žemiau pateiktame paveikslėlyje vaizduojamas įterptųjų blokų struktūros vaizdavimas. Tėvų blokas yra pagrindinis blokas, o vaikų blokas yra įdėtas blokas.
Žemiau yra įdėto bloko sintaksė.
Įdėta blokų sintaksė
<>DECLARE BEGIN < >DECLARE BEGIN .EXCEPTION END; EXCEPTION END;
- Pirmiau pateiktoje sintaksėje rodomas įdėtas blokas, kuriame yra du blokai.
- Šie blokai yra pažymėti kaip „external_block“ ir „internal_block“
Taikymo sritis įdėtame bloke: kintama sritis
Įdėtame bloke prieš pradedant juos naudoti, reikia aiškiai suprasti kiekvieno bloko apimtį ir matomumą. Ypač vidiniame bloke bus matomi tiek išorinio, tiek vidinio bloko elementai, todėl būtina tai tinkamai suprasti.
Žemiau pateikiame daugiau informacijos apie įterptųjų blokų apimtis.
- Išoriniame bloke deklaruoti elementai ir vertė, apibrėžta prieš vidinio bloko apibrėžimą, yra matomi vidinio bloko viduje.
- Vidiniame bloke deklaruotų elementų išoriniame bloke nematyti. Jie matomi tik vidiniame bloke.
- Išorinis blokas ir vidinis blokas gali turėti kintamąjį tuo pačiu pavadinimu.
- Kintamųjų, turinčių tą patį pavadinimą, vidinis blokas pagal numatytuosius nustatymus nurodys tik vidiniame bloke deklaruotą kintamąjį.
- Jei vidinis blokas nori nurodyti išorinį bloko kintamąjį, kuris turi tą patį pavadinimą kaip ir vidinis blokas, tada išorinis blokas turėtų būti LABELED, o išorinis bloko kintamasis gali būti vadinamas „
. “.
Žemiau pateiktas pavyzdys padės daugiau sužinoti apie šias taikymo sritis.
1 pavyzdys : Šiame pavyzdyje mes pamatysime vidinio ir išorinio bloko kintamųjų apimtį. Be to, mes pamatysime, kaip nurodyti kintamuosius naudojant blokinę etiketę.
<>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;/
Kodo paaiškinimas:
- 1 kodo eilutė : išorinis blokas pažymimas kaip „OUTER_BLOCK“.
- 3 kodo eilutė : kintamojo „var1“ paskelbimas VARCHAR2 (30), kurio pradinė vertė yra „išorinis blokas“.
- 4 kodo eilutė : kintamojo „var2“ paskelbimas VARCHAR2 (30) su pradine verte „reikšmė prieš vidinį bloką“.
- Kodo 6 eilutė: Vidinio bloko žymėjimas kaip „INNER_BLOCK“
- 8 kodo eilutė: kintamojo „var1“ deklaravimas vidiniame bloke kaip VARCHAR2 (30), kurio pradinė vertė yra „vidinis blokas“.
- 10 kodo eilutė: „var1“ vertės spausdinimas. Kadangi pagal numatytuosius nustatymus nėra paminėta jokia etiketė, ji paims vertę iš vidinio bloko, todėl bus spausdinamas pranešimas „internal_block“.
- 11 kodo eilutė: išorinio bloko kintamojo „var1“ vertės spausdinimas. Kadangi vidinis blokas turi kintamąjį tuo pačiu pavadinimu, turime nurodyti išorinio bloko etiketę. Tokiu būdu atspausdinamas pranešimas „išorinis blokas“.
- 12 kodo eilutė: išorinio bloko kintamojo „var2“ vertės spausdinimas. Kadangi vidiniame bloke nėra kintamojo su tokiu pavadinimu, jis pagal numatytuosius nustatymus ims vertę iš išorinio bloko, taigi išspausdins pranešimą „reikšmė prieš vidinį bloką“.
- Išorinio bloko kintamasis „var2“ buvo priskirtas vertei „vertė po vidinio bloko“. Bet ši užduotis įvyko apibrėžus vidinį bloką. Taigi šios vertės nėra vidiniame bloke.
2 pavyzdys : Šiame pavyzdyje mes rasime skirtumą tarp dviejų skaičių, vienas nurodytas išoriniame ir kitas vidiniame. Abu jie turės tą patį pavadinimą. Pažiūrėkime, kaip blokinė etiketė yra naudinga nurodant šiuos kintamuosius.
<>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;/
Kodo paaiškinimas:
- 1 kodo eilutė : išorinis blokas pažymimas kaip „OUTER_BLOCK“.
- 3 kodo eilutė : kintamojo „ln_val“ paskelbimas NUMBER, kurio pradinė vertė yra „5“.
- 5 kodo eilutė: Vidinio bloko žymėjimas kaip „INNER_BLOCK“
- 7 kodo eilutė: kintamojo „ln_val“ deklaravimas vidiniame bloke kaip NUMBER su pradine verte „3“.
- 9 kodo eilutė: „ln_val“ vertės skirtumo spausdinimas iš išorinio ir vidinio bloko. Formatas „
. “ naudojamas nurodyti šiems kintamiesiems, kad būtų išvengta konfliktų dėl to paties kintamojo pavadinimo.
Santrauka
Šioje pamokoje sužinojome, kaip sukurti įdėtą bloką ir kaip valdyti vidinio bloko ir išorinio bloko sritį. Mes taip pat matėme pavyzdį, kai vidinio ir išorinio bloko kintamieji buvo nurodyti vidinio bloko viduje.