Mik azok a hurkok?
A hurkok lehetővé teszik, hogy a program egy bizonyos része a kívánt számú alkalommal végrehajtódjon.
Ebben az oktatóanyagban megnézzük a hurok fogalmát a PL / SQL-ben és a vezérlés folyamatát a hurkokban. Tanulni fogsz-
- Bevezetés a hurkok koncepciójába
- Hurokvezérlő nyilatkozatok
- A hurok típusai a PL / SQL-ben
- Alap hurok kimutatás
- A hurkok címkézése
Bevezetés a hurkok koncepciójába
A hurok koncepció a következő előnyt nyújtja a kódolásban.
- A kód újrafelhasználhatósága
- Csökkentett kódméret
- Könnyű vezérlés
- Csökkentett komplexitás
Az alábbi ábra a hurkolás koncepcióját ábrázolja
A fenti ábrán a hurokfeltételt ellenőrizzük, és amíg a hurokfeltétel teljesül, a végrehajtási blokk végrehajtásra kerül.
Minden iterációban a hurokfeltételt ténylegesen eldöntő ciklusszámláló változónak módosulnia kell, hogy a vezérlés kilépjen a ciklusból. Bizonyos esetekben ez a ciklusszámláló változó növekmény / csökkentés operátor egy előre definiált számláláshoz, és egyes esetekben ez egy keresési feltétel, amely addig hajtja végre a blokkot, amíg ki nem elégíti azt.
Hurokvezérlő nyilatkozatok
A hurok fogalmának elsajátítása előtt kötelező megtanulni a hurok vezérlő utasításokat. A hurokvezérlő utasítások azok, amelyek valóban szabályozzák a cikluson belüli végrehajtás áramlását. Az alábbiakban a hurokvezérlő utasítások részletes leírása található.
FOLYTATNI
Ez a kulcsszó utasítást küld a PL / SQL motornak, hogy amikor a PL / SQL motor találkozik ezzel a kulcsszóval a hurokban, akkor kihagyja a fennmaradó kódot a kód végrehajtási blokkjában, és a következő iteráció azonnal megkezdődik. Ezt főleg akkor fogják használni, ha a cikluson belüli kódot ki akarják hagyni bizonyos iterációs értékek esetén.
EXIT / EXIT WHEN
Ez a kulcsszó utasítást küld a PL / SQL motornak, hogy amikor a PL / SQL motor találkozik ezzel a kulcsszóval, akkor azonnal kilép az aktuális hurokból. Ha a PL / SQL motor beágyazott ciklusban találkozik az EXIT-el, akkor abból a ciklusból kerül ki, amelyben definiálták, azaz beágyazott ciklusokban, ha az EXIT értéket a belső ciklusban adja meg, csak a belső hurokból lép ki a vezérlésből, nem a külső hurokból. Az „EXIT WHEN” kifejezést egy kifejezés követi, amely logikai eredményt ad. Ha az eredmény IGAZ, akkor a vezérlő kilép.
MENJ
Ez az utasítás átviszi a vezérlést a címkézett utasításra ("GOTO
- A vezérlés átadása csak az alprogramokon belül történhet.
- A vezérlés átvitele nem végezhető a kivételkezelő részről a végrehajtási részre
Ennek az utasításnak a használata csak akkor ajánlott, ha nincs más alternatíva, mivel a kód-vezérlés nyomon követhetősége nagyon nehéz lesz a programban, a vezérlés egyik részről a másikra történő áthelyezése miatt.
A hurok típusai a PL / SQL-ben
A PL / SQL a következő három típusú hurkot biztosítja
- Alap ciklus utasítás
- A ciklus kimutatásához
- Míg a hurok utasítás
Alap hurok kimutatás
Ez a ciklus utasítás a PL / SQL legegyszerűbb hurokstruktúrája. A végrehajtási blokk a „LOOP” kulcsszóval kezdődik, és az „END LOOP” kulcsszóval zárul.
A kilépési feltételt ebben a végrehajtási blokkban kell megadni, hogy a vezérlés kilépjen a hurokból.
A ciklusból való kilépéshez az EXIT kulcsszót kifejezetten meg kell adni a végrehajtási részben.
LOOPSzintaxis Magyarázat:END LOOP;
- A fenti szintaxisban a „LOOP” kulcsszó a hurok kezdetét, az „END LOOP” pedig a hurok végét jelöli.
- A végrehajtási blokk tartalmazza az összes végrehajtandó kódot, beleértve az EXIT feltételt is.
- A végrehajtási rész bármilyen végrehajtási utasítást tartalmazhat.
Megjegyzés: Az alap ciklus utasítás, EXIT kulcsszó nélkül, egy VÉGTELEN LOOP lesz, amely soha nem áll le.
1. példa : Ebben a példában 1 és 5 közötti számot fogunk kinyomtatni az alap ciklus utasítás használatával. Ehhez a következő kódot hajtjuk végre.
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:/
Kód Magyarázat:
- 2. kódsor: Az „a” változó deklarálása „NUMBER” típusú adattípusként és inicializálása „1” értékkel.
- 4. kódsor: A "Program elindult" utasítás kinyomtatása.
- 5. kódsor : A „LOOP” kulcsszó jelöli a hurok kezdetét.
- 6. kódsor : Kiírja az „a” értékét.
- 7. kódsor : Növeli az „a” értékét +1-gyel.
- 8. kódsor : Ellenőrzi, hogy az „a” értéke nagyobb-e, mint 5.
- 9. kódsor : Az „END LOOP” kulcsszó jelzi a végrehajtási blokk végét.
- A kód a 6-tól a 8-ig folytatódik, amíg az 'a' eléri a 6-os értéket, mivel a feltétel visszaadja az IGAZ értéket, és a vezérlő kilép a ciklusból.
- 10. kódsor : A "Program befejezve" utasítás nyomtatása
A hurkok címkézése
PL / SQL-ben a hurkok felcímkézhetők. A címkét a "<<" és a ">>" közé kell tenni. A hurkok címkézése, különösen beágyazott hurok kódokban, nagyobb olvashatóságot biztosít. A címke az EXIT paranccsal adható meg, hogy kilépjen az adott ciklusból. A címke használatával a vezérlés úgy hozható létre, hogy a beágyazott hurkok külső hurokból közvetlenül kilépjen a hurkok belsejéből bárhonnan, az exit parancs megadásával, amelyet külső hurok címke követ.
<Szintaxis Magyarázat:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- A fenti szintaxisban a kimeneti ciklusban van még egy hurok.
- A '<
>' és '< >' ezeknek a hurkoknak a címkéje.
1. példa : Ebben a példában 1- től kezdve nyomtatunk egy számot a Basic ciklus utasítás használatával. Minden szám annyiszor kerül kinyomtatásra, amennyi az értéke. A sorozat felső határát a programdeklarációs rész rögzíti. Tanuljuk meg, hogyan használhatjuk a címke fogalmát ennek elérésére. Ehhez a következő kódot hajtjuk végre
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;/
Kód Magyarázat:
- 2-3 kódsor: Az „a” és „b” változó deklarálása „SZÁM” adattípusnak.
- 4. kódsor: A „upper_limit” változó deklarálása „NUMBER” típusú adattípusként „4” értékkel
- 6. kódsor: A "Program elindult" utasítás kinyomtatása.
- 7. kódsor : A külső hurok címkéje "external_loop"
- 9. kódsor: Az „a” értéke 1-gyel növekszik.
- 11. kódsor : A belső hurok "belső_hátsó" címkével volt ellátva.
- 13. kódsor : EXIT feltétel, amely ellenőrzi, hogy az 'a' értéke magasabb-e a 'upper_limit' értéknél. Ha nem, akkor tovább megy, különben közvetlenül kilép a külső hurokból.
- 14. kódsor: A „b” értékének kinyomtatása.
- 15. kódsor : A b értékét +1-gyel növeli.
- 16. kódsor : EXIT feltétel, amely ellenőrzi, hogy a „b” értéke nagyobb-e, mint az „a”. Ha igen, akkor kilép a vezérlésből a belső hurokból.
- 14. kódsor: A "Program befejezve" utasítás nyomtatása
Összegzés
Hurok | Alap hurok |
EXIT kritériumok | Kilépés, amikor a végrehajtási részben az „EXIT” kulcsszóval találkozik |
Használat | Jó használni, ha a kilépés nem egy adott feltételen alapszik. |