Kaj so zanke?
Loops omogoča, da se določen del kode v programu izvrši želeno število krat.
V tej vadnici bomo videli koncept zanke v PL / SQL in tok nadzora v zankah. Naučil se boš-
- Uvod v koncept zank
- Izjave o nadzoru zanke
- Vrste zanke v PL / SQL
- Izjava o osnovni zanki
- Označevanje zank
Uvod v koncept zank
Koncept zank zagotavlja naslednjo prednost pri kodiranju.
- Ponovna uporaba kode
- Zmanjšana velikost kode
- Enostaven pretok nadzora
- Zmanjšana zapletenost
Spodnji diagram slikovno prikazuje koncept zanke
V zgornjem diagramu se preveri stanje zanke in dokler je izpolnjeno stanje zanke, se izvrši izvedbeni blok.
V vsaki ponovitvi mora spremenljivka števca zanke, ki dejansko odloča o stanju zanke, spremeniti nadzorni izhod iz zanke. V nekaterih primerih je ta spremenljivka števca zanke operator prirastka / zmanjšanja za vnaprej določeno štetje, v nekaterih primerih pa je pogoj iskanja, ki nadaljuje izvajanje bloka, dokler ga ne izpolni.
Izjave o nadzoru zanke
Preden se naučite koncepta zank, se obvezno naučite izjav o nadzoru zank. Stavki za nadzor zanke so tisti, ki dejansko nadzorujejo potek izvajanja znotraj zanke. Spodaj je podroben opis stavkov za nadzor zanke.
NADALJUJ
Ta ključna beseda motorju PL / SQL pošlje navodilo, da kadarkoli PL / SQL mehanizem naleti na to ključno besedo znotraj zanke, preskoči preostalo kodo v izvedbenem bloku kode in naslednja ponovitev se začne takoj. To bo uporabljeno predvsem, če hoče kodo znotraj zanke preskočiti za določene vrednosti ponovitve.
IZHOD / IZHOD KDAJ
Ta ključna beseda motorju PL / SQL pošlje navodilo, da kadarkoli PL / SQL mehanizem naleti na to ključno besedo, bo takoj izstopil iz trenutne zanke. Če PL / SQL mehanizem naleti na EXIT v ugnezdeni zanki, potem bo prišel iz zanke, v kateri je bil definiran, tj. ne iz zunanje zanke. 'EXIT WHEN' sledi izraz, ki daje logični rezultat. Če je rezultat TRUE, bo kontrolnik EXIT.
POJDI DO
Ta stavek bo kontrolnik prenesel na označen stavek ("GOTO
- Prenos nadzora se lahko izvede samo znotraj podprogramov.
- Prenosa nadzora ni mogoče izvesti iz dela, ki obravnava izjeme, v izvršilni del
Uporaba te izjave ni priporočljiva, razen če ni drugih možnosti, saj bo sledljivost nadzora kode v programu zelo težka zaradi prenosa nadzora iz enega dela v drugega.
Vrste zanke v PL / SQL
PL / SQL ponuja naslednje tri vrste zank
- Izjava o osnovni zanki
- Za izjavo zanke
- Izjava zanke while
Izjava o osnovni zanki
Ta izjava zanke je najpreprostejša struktura zanke v PL / SQL. Izvršitveni blok se začne s ključno besedo 'LOOP' in konča s ključno besedo 'END LOOP'.
Izhodni pogoj mora biti podan v tem izvedbenem bloku, tako da nadzoruje izhod iz zanke.
Za izhod iz zanke mora biti v izvedbenem delu izrecno podana ključna beseda EXIT.
LOOPPojasnilo sintakse:END LOOP;
- V zgornji sintaksi ključna beseda 'LOOP' označuje začetek zanke, 'END LOOP' pa konec zanke.
- Izvršitveni blok vsebuje vso kodo, ki jo je treba izvesti, vključno s pogojem EXIT.
- Izvršilni del lahko vsebuje kateri koli stavek o izvedbi.
Opomba: Izkaz osnovne zanke brez ključne besede EXIT bo INFINITE-LOOP, ki se ne bo nikoli ustavil.
Primer 1 : V tem primeru bomo s pomočjo stavka osnovne zanke natisnili številko od 1 do 5. Za to bomo izvedli naslednjo kodo.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Razlaga kode:
- Vrstica kode 2 : Spremenljivka 'a' se razglasi za podatkovni tip 'ŠTEVILO' in se inicializira z vrednostjo '1'.
- Vrstica kode 4 : Tiskanje stavka "Program se je začel".
- Vrstica kode 5: Ključna beseda 'LOOP' označuje začetek zanke.
- 6. vrstica kode: natisne vrednost 'a'.
- 7. vrstica kode: Vrednost 'a' poveča za +1.
- Vrstica kode 8: preveri, ali je vrednost 'a' večja od 5.
- Vrstica kode 9: Ključna beseda 'END LOOP' označuje konec izvedbenega bloka.
- Koda od vrstice 6 do vrstice 8 se bo še naprej izvajala, dokler 'a' ne doseže vrednosti 6, saj bo pogoj vrnil TRUE, nadzor pa bo EXIT iz zanke.
- Vrstica kode 10: Tiskanje stavka "Program zaključen"
Označevanje zank
V PL / SQL so zanke lahko označene. Oznaka mora biti zaprta med "<<" in ">>". Označevanje zank, zlasti v ugnezdenih kodah zank, bo dalo večjo berljivost. Oznako lahko podate v ukazu EXIT za izhod iz te zanke. Z uporabo oznake lahko nadzor naredite tako, da neposredno zapustite zunanjo zanko ugnezdenih zank kjer koli znotraj zank, tako da daste ukaz za izhod, ki mu sledi oznaka zunanje zanke.
<Pojasnilo sintakse:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- V zgornji sintaksi je v zanki out še ena zanka.
- Oznaki '<
>' in '< >' sta oznaki teh zank.
Primer 1 : V tem primeru bomo z uporabo stavka Basic loop natisnili številko, začenši z 1. Vsaka številka bo natisnjena tolikokrat, kolikor je njena vrednost. Zgornja meja serije je določena v delu izjave o programu. Naučimo se, kako lahko za dosego tega uporabimo koncept etikete. Za to bomo izvedli naslednjo kodo
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Razlaga kode:
- Koda vrstica 2-3 : Razglasitev spremenljivk 'a' in 'b' za podatkovni tip 'ŠTEVILO'.
- Vrstica kode 4 : Razglasitev spremenljivke 'zgornja_meja' kot podatkovnega tipa 'ŠTEVILO' z vrednostjo '4'
- 6. vrstica kode : Tiskanje stavka "Program se je začel".
- Vrstica kode 7: Zunanja zanka je bila označena kot "external_loop"
- Vrstica kode 9: Vrednost 'a' se poveča za 1.
- Koda 11: Notranja zanka je bila označena kot "inner_loop".
- Vrstica kode 13: Pogoj EXIT, ki preveri, ali je vrednost 'a' višja od vrednosti 'upper_limit'. Če ne, bo šel še dlje, sicer izstopi neposredno iz zunanje zanke.
- Vrstica kode 14: Tiskanje vrednosti 'b'.
- Vrstica kode 15: Vrednost 'b' poveča za +1.
- Vrstica kode 16: Pogoj EXIT, ki preverja, ali je vrednost 'b' višja od 'a'. Če je tako, bo nadzor zaprl iz notranje zanke.
- Vrstica kode 14: Tiskanje stavka "Program zaključen"
Povzetek
Loop | Osnovna zanka |
Merila IZHODA | Izhod, ko v izvedbenem delu naletite na ključno besedo 'EXIT' |
Uporaba | Dobro je uporabiti, kadar izhod ne temelji na nobenem posebnem pogoju. |