PL / SQL mainīgais tvērums & Iekšējais ārējais bloks: ligzdota struktūra

Satura rādītājs:

Anonim

Kas ir Nested Blocks Oracle?

PL / SQL katru bloku var ievietot citā blokā. Tie tiek saukti par ligzdotu bloku. Ligzdoti bloki ir ļoti izplatīti, kad mēs vēlamies veikt noteiktu procesu, un tajā pašā laikā šo procesu kods jāglabā atsevišķā konteinerā (blokā).

Nested bloka koncepcija palīdzēs programmētājam uzlabot lasāmību, sadalot sarežģītas lietas katrā blokā un apstrādājot izņēmumu katram blokam galvenā ārējā bloka iekšpusē.

Šajā apmācībā jūs uzzināsiet

  • Ligzdota bloka struktūra
  • Darbības jomas ligzdotajā blokā: mainīgais tvērums

Ligzdota bloka struktūra

Bloku var ievietot citā blokā. To var ievietot izpildes daļā vai izņēmumu apstrādes daļā. Šos blokus var arī marķēt. Vienā ārējā blokā var būt daudz iekšējo bloku. Katrs iekšējais bloks atkal ir PL / SQL bloks, tāpēc visas iekšējā bloka īpašības un īpašības būs vienādas ar ārējo bloku. Zemāk redzamajā attēlā ir attēlota ligzdotu bloku struktūras attēlojums. Vecāku bloks ir galvenais bloks, un bērnu bloks ir ligzdots bloks.

Zemāk ir ligzdotā bloka sintakse.

Ligzdota bloķēšanas sintakse

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Iepriekš minētā sintakse parāda ligzdoto bloku, kurā kopā ir divi bloki.
  • Šie bloki ir apzīmēti kā “ārējais_bloks” un “iekšējais_bloks”

Darbības jomas ligzdotajā blokā: mainīgais tvērums

Ligzdotajā blokā pirms to izmantošanas ir skaidri jāsaprot katra bloka darbības joma un redzamība. Jo īpaši iekšējā blokā būs redzami gan ārējā, gan iekšējā bloka elementi, tāpēc tas ir pareizi jāsaprot.

Tālāk zemāk sniegts kopsavilkums par ligzdoto bloku darbības jomām.

  • Ārējā blokā deklarētie elementi un vērtība, kas ir definēta pirms iekšējā bloka definīcijas, ir redzami iekšējā bloka iekšpusē.
  • Iekšējā blokā deklarētie elementi ārējā blokā nav redzami. Tie ir redzami tikai iekšējā blokā.
  • Ārējam blokam un iekšējam blokam var būt mainīgais ar tādu pašu nosaukumu.
  • Mainīgo lielumu ar tādu pašu nosaukumu iekšējais bloks pēc noklusējuma attiecas tikai uz mainīgo, kas deklarēts iekšējā blokā.
  • Ja iekšējais bloks vēlas atsaukties uz ārējā bloka mainīgo, kuram ir tāds pats nosaukums kā iekšējam blokam, tad ārējam blokam jābūt LABELED, un ārējā bloka mainīgo var saukt par '. '

Zemāk sniegtais piemērs palīdzēs izprast vairāk par šīm jomām.

1. piemērs : Šajā piemērā mēs redzēsim mainīgo apjomu iekšējā un ārējā blokā. Mēs arī redzēsim, kā atsaukties uz mainīgajiem, izmantojot bloka etiķeti.

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

Koda skaidrojums:

  • 1. koda rindiņa : ārējā bloka etiķete ir “OUTER_BLOCK”.
  • 3. koda rindiņa : mainīgā “var1” deklarēšana par VARCHAR2 (30) ar sākotnējo vērtību “ārējais bloks”.
  • Kodu rinda 4 : Mainīgā “var2” deklarēšana par VARCHAR2 (30) ar sākotnējo vērtību “vērtība pirms iekšējā bloka”.
  • 6. koda rindiņa: Iekšējā bloka etiķete kā “INNER_BLOCK”
  • 8. koda rindiņa: mainīgā “var1” deklarēšana iekšējā blokā kā VARCHAR2 (30) ar sākotnējo vērtību “iekšējais bloks”.
  • 10. koda rindiņa: “var1” vērtības izdrukāšana. Tā kā pēc noklusējuma nav pieminēta neviena etiķete, tā ņems vērtību no iekšējā bloka, tādējādi izdrukājot ziņojumu “inner_block”.
  • 11. koda rindiņa: ārējā bloka mainīgā “var1” vērtības izdrukāšana. Tā kā iekšējam blokam ir mainīgais ar tādu pašu nosaukumu, mums ir jāatsaucas uz ārējā bloka etiķeti. Tādējādi tiek izdrukāts ziņojums “ārējais bloks”.
  • 12. koda rindiņa: ārējā bloka mainīgā “var2” vērtības izdrukāšana. Tā kā iekšējā blokā nav neviena mainīgā ar šo nosaukumu, pēc noklusējuma tas ņems vērtību no ārējā bloka, tādējādi drukājot ziņojumu “value before internal block”.
  • Mainīgais “var2” ārējā blokā ir piešķirts ar vērtību “vērtība pēc iekšējā bloka”. Bet šis uzdevums ir noticis pēc iekšējā bloka definēšanas. Tādējādi šī vērtība nav iekšējā blokā.

2. piemērs : Šajā piemērā mēs atradīsim atšķirību starp diviem skaitļiem, no kuriem viens ir deklarēts pie ārējā bloka un otrs pie iekšējā bloka. Abiem būs tāds pats nosaukums. Apskatīsim, kā bloka etiķete ir noderīga, atsaucoties uz šiem mainīgajiem.

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

Koda skaidrojums:

  • 1. koda rindiņa : ārējā bloka etiķete ir “OUTER_BLOCK”.
  • 3. koda rindiņa : mainīgā “ln_val” deklarēšana par NUMBER ar sākotnējo vērtību “5”.
  • 5. koda rindiņa: Iekšējā bloka apzīmēšana kā “INNER_BLOCK”
  • 7. koda rindiņa: mainīgā lieluma “ln_val” deklarēšana iekšējā blokā kā NUMBER ar sākotnējo vērtību “3”.
  • 9. koda rindiņa: “ln_val” vērtības starpības drukāšana no ārējā un iekšējā bloka. Formātu ". " izmanto, lai atsauktos uz šiem mainīgajiem, lai izvairītos no konfliktiem viena un tā paša mainīgā nosaukuma dēļ.

Kopsavilkums

Šajā apmācībā mēs esam iemācījušies izveidot ligzdotu bloku un kā rīkoties ar darbības jomu iekšējā blokā un ārējos blokos. Mēs esam redzējuši arī piemēru, kur mainīgie no iekšējā un ārējā bloka tika norādīti iekšējā bloka iekšpusē.