PL / SQL-variabelt omfang & Indre ydre blok: Indlejret struktur

Indholdsfortegnelse:

Anonim

Hvad er Nested Blocks Oracle?

I PL / SQL kan hver blok nestes i en anden blok. De kaldes en indlejret blok. Indlejrede blokke er meget almindelige, når vi vil udføre den bestemte proces, og samtidig skal koden til denne proces opbevares i en separat beholder (blok).

Indlejret blokkoncept hjælper programmøren med at forbedre læsbarheden ved at adskille de komplekse ting i hver blok og til at håndtere undtagelsen for hver blok inde i den ydre hovedblok.

I denne vejledning lærer du-

  • Indlejret blokstruktur
  • Omfang i indlejret blok: variabelt omfang

Indlejret blokstruktur

En blok kan indlejres i en anden blok. Dette kan indlejres enten i eksekveringsdelen eller i undtagelseshåndteringsdelen. Disse blokke kan også mærkes. En ydre blok kan indeholde mange indre blokke. Hver indre blok er igen en PL / SQL-blok, derfor er alle egenskaber og egenskaber ved den indre blok den samme som den ydre blok. Nedenstående billede giver den billedlige gengivelse af den indlejrede blokstruktur. Forældreblok er hovedblokken, og underordnet blok er den indlejrede blok.

Nedenfor er syntaksen for den indlejrede blok.

Indlejret bloksyntaks

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Ovenstående syntaks viser den indlejrede blok, der indeholder i alt to blokke.
  • Disse blokke er mærket som 'outer_block' og 'inner_block'

Omfang i indlejret blok: variabelt omfang

I indlejret blok skal man forstå omfanget og synligheden af ​​hver blok klart, før man bruger dem. Især i den indre blok vil elementerne fra både ydre og indre blok være synlige, hvorfor korrekt forståelse af dette er nødvendig.

Nedenstående punkter vil opsummere mere vedrørende omfanget i indlejrede blokke.

  • Elementerne, der er angivet i den ydre blok, og den værdi, der er defineret inden den indre blokdefinition, er synlige inde i den indre blok.
  • Elementerne, der er angivet i den indre blok, er ikke synlige i den ydre blok. De er kun synlige inden i den indre blok.
  • Ydre blok og indre blok kan have en variabel med samme navn.
  • I tilfælde af variabler med samme navn vil den indre blok som standard kun henvise til variablen, der er deklareret i den indre blok.
  • Hvis den indre blok ønsker at henvise til den ydre blokvariabel, der har samme navn som den for den indre blok, skal den ydre blok være MÆRKET, og den ydre blokvariabel kan henvises til som '. '

Nedenstående eksempel hjælper med at forstå mere om disse anvendelsesområder.

Eksempel 1 : I dette eksempel vil vi se omfanget af variabler i den indre og ydre blok. Vi vil også se, hvordan man henviser variablerne ved hjælp af bloketiket.

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

Kode Forklaring:

  • Kodelinje 1 : Mærkning af den ydre blok som "OUTER_BLOCK".
  • Kodelinje 3 : Erklæring af en variabel 'var1' som VARCHAR2 (30) med den indledende værdi af "ydre blok".
  • Kodelinje 4 : Erklæring af en variabel 'var2' som VARCHAR2 (30) med den oprindelige værdi på "værdi før indre blok".
  • Kodelinje 6: Mærkning af den indre blok som "INNER_BLOCK"
  • Kodelinje 8: Erklæring af en variabel 'var1' i den indre blok som VARCHAR2 (30) med den indledende værdi af "indre blok".
  • Kodelinje 10: Udskrivning af værdien af ​​'var1'. Da der ikke er nævnt nogen etiket som standard, vil den tage værdien fra en indre blok og dermed udskrive 'inner_block' -meddelelsen.
  • Kodelinje 11: Udskrivning af værdien af ​​den ydre blokvariabel 'var1'. Da den indre blok har variablen med samme navn, skal vi henvise til den ydre bloketiket. Således udskriver beskeden 'ydre blok'.
  • Kodelinje 12: Udskrivning af værdien af ​​den ydre blokvariabel 'var2'. Da der ikke er nogen variabel med dette navn til stede i den indre blok, vil den som standard tage værdien fra en ydre blok, og deraf udskrive 'værdi før indre blok' besked.
  • Variablen 'var2' i den ydre blok er tildelt værdien 'værdi efter indre blok'. Men denne opgave er sket efter definitionen af ​​en indre blok. Derfor er denne værdi ikke til stede i den indre blok.

Eksempel 2 : I dette eksempel skal vi finde forskellen mellem to tal, et deklareret ved den ydre blok og et andet ved den indre blok. Begge har samme navn. Lad os se, hvordan bloketiket er nyttigt ved henvisning til disse variabler.

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

Kode Forklaring:

  • Kodelinje 1 : Mærkning af den ydre blok som "OUTER_BLOCK".
  • Kodelinje 3 : Erklærer en variabel 'ln_val' som NUMBER med den indledende værdi på "5".
  • Kodelinje 5: Mærkning af den indre blok som "INNER_BLOCK"
  • Kodelinje 7: Erklærer en variabel 'ln_val' i den indre blok som NUMBER med den oprindelige værdi på "3".
  • Kodelinje 9: Udskrivning af forskellen i værdi på 'ln_val' fra ydre og indre blok. Formatet ". " bruges til at henvise til disse variabler for at undgå konflikter på grund af samme variabelnavn.

Resumé

I denne vejledning har vi lært, hvordan man opretter en indlejret blok, og hvordan man håndterer omfanget i indre blok og ydre blok. Vi har også set et eksempel, hvor variablerne fra den indre og ydre blok blev henvist inde i den indre blok.