„Oracle PL / SQL LOOP“ su pavyzdžiu

Kas yra kilpos?

Loops leidžia tam tikrą programos kodo dalį įvykdyti norimą skaičių kartų.

Šioje pamokoje pamatysime ciklo koncepciją PL / SQL ir valdymo srautą kilpomis. Tu išmoksi-

  • Įvadas į kilpų koncepciją
  • Ciklo valdymo teiginiai
  • PL / SQL kilpų tipai
  • Pagrindinis ciklo pareiškimas
  • Kilpų ženklinimas

Įvadas į kilpų koncepciją

Loops koncepcija suteikia šį kodavimo pranašumą.

  • Kodo pakartotinis naudojimas
  • Sumažintas kodo dydis
  • Lengvas valdymo srautas
  • Sumažintas sudėtingumas

Žemiau esančioje diagramoje vaizdinė koncepcija parodo kilpų koncepciją

Aukščiau pateiktoje diagramoje bus patikrinta ciklo sąlyga ir tol, kol bus įvykdyta ciklo sąlyga, vykdymo blokas bus vykdomas.

Kiekvienoje iteracijoje kilpos skaitiklio kintamasis, kuris iš tikrųjų nusprendžia ciklo sąlygą, turėtų būti pakeistas, kad valdymas būtų išvestas iš kilpos. Kai kuriais atvejais šis kilpos skaitiklio kintamasis yra prieaugio / mažinimo operatorius iš anksto nustatytam skaičiui, o kai kuriais atvejais tai yra paieškos sąlyga, vykdanti bloką, kol jis jį patenkina.

Ciklo valdymo teiginiai

Prieš pradedant mokytis ciklo sampratos, būtina išmokti ciklo valdymo sakinius. Ciklo valdymo sakiniai yra tie, kurie iš tikrųjų kontroliuoja vykdymo srautą ciklo viduje. Žemiau pateikiamas išsamus ciklo valdymo sakinių aprašymas.

TĘSTI

Šis raktinis žodis siunčia nurodymą PL / SQL varikliui, kad kai tik PL / SQL variklis sutinka šį raktinį žodį ciklo viduje, jis praleis likusį kodą vykdymo kodo bloke ir kita kartojimas prasidės iškart. Tai daugiausia bus naudojama, jei kilpos viduje esantį kodą norima praleisti, norint nustatyti tam tikras iteracijos vertes.

EXIT / EXIT WHEN

Šis raktinis žodis siunčia instrukciją PL / SQL varikliui, kad kai tik PL / SQL variklis susidurs su šiuo raktiniu žodžiu, jis nedelsdamas išeis iš dabartinės kilpos. Jei PL / SQL variklis susiduria su EXIT į įterptą kilpą, tada jis išeis iš ciklo, kuriame jis buvo apibrėžtas, ty į įdėtą kilpą, suteikdamas EXIT vidinėje kilpoje, valdymas išeis tik iš vidinės, bet ne iš išorinės kilpos. Po „EXIT WHEN“ seka išraiška, suteikianti loginį rezultatą. Jei rezultatas yra TIESA, tada valdiklis bus IŠJUNGTAS.

EITI Į

Šis sakinys valdiklį perkels į pažymėtą sakinį („GOTO

  • Valdymas gali būti perduodamas tik per paprogrames.
  • Valdymo negalima perduoti išimties tvarkymo daliai į vykdymo dalį

Šio teiginio naudoti nerekomenduojama, nebent nėra kitų alternatyvų, nes kodo valdymo atsekamumas programoje bus labai sunkus dėl valdymo perkėlimo iš vienos dalies į kitą.

PL / SQL kilpų tipai

PL / SQL teikia šias tris kilpų rūšis

  • Pagrindinis ciklo sakinys
  • Dėl ciklo pareiškimo
  • Nors ciklo pareiškimas

Pagrindinis ciklo pareiškimas

Šis ciklo sakinys yra paprasčiausia PL / SQL ciklo struktūra. Vykdymo blokas prasideda raktiniu žodžiu „LOOP“ ir baigiasi raktiniu žodžiu „END LOOP“.

Išėjimo sąlyga turėtų būti nurodyta šio vykdymo bloko viduje, kad valdymas išeitų iš kilpos.

Norint išeiti iš ciklo, vykdymo dalyje reikia aiškiai nurodyti EXIT raktinį žodį.

LOOPEND LOOP;
Sintaksės paaiškinimas:
  • Pirmiau pateiktoje sintaksėje raktinis žodis „LOOP“ žymi ciklo pradžią, o „END LOOP“ - ciklo pabaigą.
  • Vykdymo bloke yra visas kodas, kurį reikia vykdyti, įskaitant sąlygą EXIT.
  • Vykdymo dalyje gali būti bet koks vykdymo sakinys.

Pastaba: Pagrindinis ciklo sakinys be raktinio žodžio EXIT bus Begalinis žvilgsnis, kuris niekada nesustos.

1 pavyzdys : Šiame pavyzdyje mes atspausdinsime skaičių nuo 1 iki 5, naudodami pagrindinį ciklo sakinį. Tam mes vykdysime šį kodą.

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

Kodo paaiškinimas:

  • 2 kodo eilutė : kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „1“.
  • 4 kodo eilutė : išspausdinkite teiginį „Programa paleista“.
  • 5 kodo eilutė: raktinis žodis „LOOP“ žymi ciklo pradžią.
  • 6 kodo eilutė: išspausdinama „a“ reikšmė.
  • 7 kodo eilutė: padidina „a“ vertę +1.
  • 8 kodo eilutė: patikrina, ar „a“ vertė yra didesnė nei 5.
  • 9 kodo eilutė: Raktinis žodis „END LOOP“ žymi vykdymo bloko pabaigą.
  • Kodas nuo 6 eilutės iki 8 eilutės bus vykdomas tol, kol „a“ pasieks 6 reikšmę, nes sąlyga grąžins TRUE, o valdiklis išeis iš kilpos.
  • 10 kodo eilutė: ataskaitos „Programa baigta“ spausdinimas

Kilpų ženklinimas

Naudojant PL / SQL, kilpos gali būti pažymėtos. Etiketė turėtų būti tarp „<<“ ir „>>“. Kilpų žymėjimas, ypač įdėtųjų kilpų koduose, suteiks daugiau skaitomumo. Etiketė gali būti suteikta komandoje EXIT, kad išeitumėte iš tos kilpos. Naudojant etiketę, valdiklį galima tiesiogiai išeiti iš įterptųjų kilpų išorinės kilpos iš bet kurios vietos kilpų viduje, suteikiant komandą „exit“, po kurios nurodoma išorinės kilpos etiketė.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Sintaksės paaiškinimas:
  • Pirmiau pateiktoje sintaksėje išėjimo kilpa turi dar vieną kilpą.
  • „<>“ ir „<>“ yra šių kilpų etiketės.

1 pavyzdys : Šiame pavyzdyje spausdinsime numerį nuo 1, naudodami „Basic loop“ sakinį. Kiekvienas skaičius bus spausdinamas tiek kartų, kiek jo vertė. Viršutinė serijos riba yra fiksuota programos deklaravimo dalyje. Sužinokime, kaip mes galime naudoti etiketės koncepciją tam pasiekti. Tam mes vykdysime šį kodą

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

Kodo paaiškinimas:

  • 2-3 kodo eilutė : kintamųjų „a“ ir „b“ paskelbimas duomenų tipu „NUMBER“.
  • 4 kodo eilutė : kintamojo „upper_limit“ paskelbimas duomenų tipu „NUMBER“ su verte „4“
  • Kodo 6 eilutė : ataskaitos „Programa pradėta“ spausdinimas.
  • 7 kodo eilutė: išorinė kilpa buvo pažymėta kaip „external_loop“
  • 9 kodo eilutė: „a“ reikšmė padidinama 1.
  • 11 kodo eilutė: Vidinė kilpa buvo pažymėta kaip „internal_loop“.
  • 13 kodo eilutė: EXIT sąlyga, kuri patikrina, ar reikšmė „a“ yra didesnė už reikšmę „upper_limit“. Jei ne, tada jis eis toliau, kitaip išeis tiesiai iš išorinės kilpos.
  • Kodo 14 eilutė: „b“ vertės spausdinimas.
  • 15 kodo eilutė: „b“ reikšmę padidina +1.
  • Kodo 16 eilutė: EXIT sąlyga, kuri patikrina, ar „b“ vertė yra didesnė nei „a“. Jei taip, tada jis išeis iš valdymo iš vidinės kilpos.
  • Kodo 14 eilutė: ataskaitos „Programa baigta“ spausdinimas

Santrauka

Kilpa Pagrindinė kilpa
EXIT kriterijai Išeikite, kai vykdymo dalyje sutinkate raktinį žodį „EXIT“
Naudojimas Gerai naudoti, kai išėjimas nėra pagrįstas jokiomis konkrečiomis sąlygomis.

Įdomios straipsniai...