PL / SQL-muuttuja & Sisempi ulompi lohko: Sisäkkäinen rakenne

Sisällysluettelo:

Anonim

Mikä on Nested Blocks Oracle?

PL / SQL: ssä kukin lohko voidaan sijoittaa toiseen lohkoon. Niitä kutsutaan sisäkkäisiksi lohkoiksi. Sisäkkäiset lohkot ovat hyvin yleisiä, kun haluamme suorittaa tietyn prosessin, ja samalla näiden prosessien koodi tulisi pitää erillisessä säilössä (lohko).

Sisäkkäinen lohkokonsepti auttaa ohjelmoijaa parantamaan luettavuutta erottamalla monimutkaiset asiat kuhunkin lohkoon ja käsittelemään kunkin päälohkon sisäisen lohkon poikkeuksen.

Tässä opetusohjelmassa opit-

  • Sisäkkäinen lohkon rakenne
  • Sisäkkäisen lohkon laajuudet: Muuttuva laajuus

Sisäkkäinen lohkon rakenne

Lohko voidaan sijoittaa toiseen lohkoon. Tämä voidaan sijoittaa joko suoritusosaan tai poikkeuksen käsittelyosaan. Nämä lohkot voidaan myös merkitä. Yksi ulompi lohko voi sisältää monia sisäisiä lohkoja. Jokainen sisempi lohko on jälleen PL / SQL-lohko, joten kaikki sisäisen lohkon ominaisuudet ja ominaisuudet ovat samat kuin ulomman lohkon. Alla oleva kuva antaa sisäkkäisen lohkorakenteen kuvallisen kuvan. Vanhempainlohko on päälohko ja lapsilohko on sisäkkäinen lohko.

Alla on sisäkkäisen lohkon syntaksi.

Sisäkkäinen estosyntaksi

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Yllä oleva syntaksi näyttää sisäkkäisen lohkon, joka sisältää yhteensä kaksi lohkoa.
  • Nämä lohkot on merkitty 'ulommalla estolla' ja 'sisäisellä estolla'

Sisäkkäisen lohkon laajuudet: Muuttuva laajuus

Sisäkkäisissä lohkoissa on ymmärrettävä selvästi kunkin lohkon laajuus ja näkyvyys ennen niiden käyttöä. Erityisesti sisemmässä lohkossa elementit sekä ulkoisesta että sisemmästä lohkosta ovat näkyvissä, joten tämän ymmärtäminen on välttämätöntä.

Alla olevissa kohdissa on yhteenveto lisää sisäkkäisten lohkojen laajuudesta.

  • Ulkoisessa lohkossa ilmoitetut elementit ja arvo, joka on määritelty ennen sisäisen lohkon määritystä, ovat näkyvissä sisemmän lohkon sisällä.
  • Sisälohkossa ilmoitetut elementit eivät ole näkyvissä ulkolohkossa. Ne näkyvät vain sisemmässä lohkossa.
  • Ulkoisella ja sisäisellä lohkolla voi olla muuttuja samalla nimellä.
  • Muuttujien kanssa, joilla on sama nimi, sisäinen lohko oletusarvoisesti viittaa vain sisempään lohkoon ilmoitettuun muuttujaan.
  • Jos sisempi lohko haluaa viitata ulompaan lohkomuuttujaan, jolla on sama nimi kuin sisempään lohkoon, ulomman lohkon tulisi olla LABELED, ja ulomman lohkon muuttujaan voidaan viitata nimellä . .

Seuraava esimerkki auttaa ymmärtämään lisää näistä laajuuksista.

Esimerkki 1 : Tässä esimerkissä aiomme nähdä muuttujien laajuuden sisä- ja ulkolohkossa. Aiomme myös nähdä, miten muuttujat voidaan viitata lohkotunnisteella.

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

Koodin selitys:

  • Koodirivi 1 : Merkitään ulkolohko nimellä "OUTER_BLOCK".
  • Koodirivi 3 : Muuttujan 'var1' julistaminen VARCHAR2: ksi (30), jonka alkuarvo on "ulompi lohko".
  • Koodirivi 4 : Muuttujan 'var2' julistaminen VARCHAR2: ksi (30), jonka alkuarvo on "arvo ennen sisäistä lohkoa".
  • Koodirivi 6: Sisemmän lohkon merkintä nimellä "INNER_BLOCK"
  • Koodirivi 8: Muuttujan 'var1' ilmoittaminen sisemmässä lohkossa VARCHAR2: ksi (30) alkuperäisen arvon "sisempi lohko" kanssa.
  • Koodirivi 10: Var1-arvon tulostaminen. Koska etikettiä ei mainita oletusarvoisesti, se ottaa arvon sisäisestä lohkosta, jolloin "sisäinen_lohko" -viesti tulostetaan.
  • Koodirivi 11: Ulkoisen lohkomuuttujan 'var1' arvon tulostaminen. Koska sisemmällä lohkolla on muuttuja samalla nimellä, meidän on viitattava ulompaan lohkoon. Tällöin sanoma 'ulompi lohko' tulostetaan.
  • Koodirivi 12: Ulkopuolisen muuttujan 'var2' arvon tulostaminen. Koska sisemmässä lohkossa ei ole tämän nimistä muuttujaa, se ottaa oletusarvoisesti arvon ulkoisesta lohkosta, jolloin tulostetaan 'arvo ennen sisäistä lohkoa' -viesti.
  • Ulkoisen lohkon muuttujalle 'var2' on annettu arvo 'arvo sisäisen lohkon jälkeen'. Mutta tämä tehtävä on tapahtunut sisäisen lohkon määrittelyn jälkeen. Siksi tätä arvoa ei ole sisäisessä lohkossa.

Esimerkki 2 : Tässä esimerkissä aiomme löytää eron kahdesta luvusta, joista toinen on ilmoitettu ulommassa lohkossa ja toinen sisäisessä lohkossa. Molemmilla on sama nimi. Katsotaanpa, kuinka lohkotunniste on hyödyllinen viitattaessa näihin muuttujiin.

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

Koodin selitys:

  • Koodirivi 1 : Merkitään ulkolohko nimellä "OUTER_BLOCK".
  • Koodirivi 3 : Muuttujan 'ln_val' julistaminen NUMBER: ksi alkuperäisen arvon "5" kanssa.
  • Koodirivi 5: Sisemmän lohkon tunnisteeksi INNER_BLOCK
  • Koodirivi 7: Muuttujan 'ln_val' julistaminen sisemmässä lohkossa NUMERIKSI alkuperäisen arvon 3 kanssa.
  • Koodirivi 9: Ln_val-arvon eron tulostaminen ulkoisesta ja sisäisestä lohkosta. Muotoa ". " käytetään osoittamaan nämä muuttujat välttämään samasta muuttujan nimestä johtuvia ristiriitoja.

Yhteenveto

Tässä opetusohjelmassa olemme oppineet luomaan sisäkkäisen lohkon ja kuinka käsitellä laajuutta sisä- ja ulkolohkoissa. Olemme myös nähneet esimerkin, jossa sisäisen ja ulkoisen lohkon muuttujia viitattiin sisäisen lohkon sisään.