Oracle PL / SQL LOOP esimerkillä

Sisällysluettelo:

Anonim

Mitä silmukat ovat?

Silmukat sallivat ohjelman tietyn osan koodista suorittaa halutun määrän kertoja.

Tässä opetusohjelmassa aiomme nähdä silmukakonseptin PL / SQL: ssä ja ohjauksen kulun silmukoissa. Sinä tulet oppimaan-

  • Johdanto silmukakonseptiin
  • Silmukkaohjauslausekkeet
  • Silmukatyypit PL / SQL: ssä
  • Perussilmukka
  • Silmukoiden merkitseminen

Johdanto silmukakonseptiin

Loops-käsite tarjoaa seuraavan edun koodauksessa.

  • Koodin uudelleenkäyttö
  • Pienennetty koodikoko
  • Helppo ohjata
  • Vähentynyt monimutkaisuus

Alla oleva kaavio näyttää silmukointikonseptin kuvallisella tavalla

Yllä olevassa kaaviossa silmukan kunto tarkistetaan, ja niin kauan kuin silmukan ehto täyttyy, suorituslohko suoritetaan.

Jokaisessa iteraatiossa silmukan laskurin muuttujan, joka tosiasiallisesti päättää silmukan ehdon, tulisi muuttua, jotta ohjaus poistuu silmukasta. Joissakin tapauksissa tämä silmukalaskurin muuttuja on inkrementti- / vähennysoperaattori ennalta määritetylle määrälle, ja joissakin tapauksissa se on hakuehto, joka jatkaa lohkon suorittamista, kunnes se tyydyttää sen.

Silmukkaohjauslausekkeet

Ennen silmukakonseptin oppimista on pakollinen oppia silmukanohjauslausekkeet. Silmukkaohjauslausekkeet ovat niitä, jotka tosiasiallisesti ohjaavat suorituksen kulkua silmukan sisällä. Alla on yksityiskohtainen kuvaus silmukan ohjauslausekkeista.

JATKAA

Tämä avainsana lähettää käskyn PL / SQL-moottorille, että aina kun PL / SQL-moottori kohtaa tämän avainsanan silmukan sisällä, se ohittaa jäljellä olevan koodin koodin suorituslohkossa ja seuraava iterointi alkaa välittömästi. Tätä käytetään pääasiassa, jos silmukan sisällä oleva koodi haluaa ohittaa tietyt iterointiarvot.

EXIT / EXIT WHIN

Tämä avainsana lähettää käskyn PL / SQL-moottorille, että aina kun PL / SQL-moottori kohtaa tämän avainsanan, se poistuu välittömästi nykyisestä silmukasta. Jos PL / SQL-moottori kohtaa EXIT: n sisäkkäisessä silmukassa, se tulee ulos silmukasta, jossa se on määritelty, ts. Sisäkkäisissä silmukoissa, jolloin EXIT: n antaminen sisäiseen silmukkaan, vain sulkee ohjauksen sisäisestä silmukasta, mutta ei ulommasta silmukasta. 'EXIT WHEN' -kohtaa seuraa lauseke, joka antaa Boolen tuloksen. Jos tulos on TOSI, ohjaus poistuu.

MENE

Tämä lause siirtää ohjausobjektin merkittyyn käskyyn ("GOTO

  • Ohjaus voidaan siirtää vain alaohjelmien sisällä.
  • Ohjausta ei voida siirtää poikkeuksen käsittelyosasta suoritusosaan

Tämän lauseen käyttöä ei suositella, ellei muita vaihtoehtoja ole, koska koodin hallinnan jäljitettävyys on ohjelmassa erittäin vaikeaa johtuen ohjauksen siirtämisestä osasta toiseen.

Silmukatyypit PL / SQL: ssä

PL / SQL tarjoaa seuraavat kolmen tyyppiset silmukat

  • Perussilmukan lause
  • Silmukka-lauseelle
  • Vaikka silmukka-lause

Perussilmukka

Tämä silmukka-lause on yksinkertaisin silmukkarakenne PL / SQL: ssä. Suorituslohko alkaa avainsanalla 'LOOP' ja päättyy avainsanalla 'END LOOP'.

Poistumistilanne tulisi antaa tämän suorituslohkon sisällä, jotta ohjaus poistuu silmukasta.

Se tarvitsee EXIT-avainsanan nimenomaisesti suoritusosassa poistuakseen silmukasta.

LOOPEND LOOP;
Syntaksi Selitys:
  • Edellä olevassa syntaksissa avainsana 'LOOP' merkitsee silmukan alkua ja 'END LOOP' silmukan loppua.
  • Suorituslohko sisältää kaiken suoritettavan koodin, myös EXIT-ehdon.
  • Suoritusosa voi sisältää minkä tahansa suorituslausekkeen.

Huomaa: Perussilmukan lause, jossa ei ole EXIT-avainsanaa, on ÄÄRITTÖMÄN LOOP, joka ei koskaan lopu.

Esimerkki 1 : Tässä esimerkissä aiomme tulostaa numeron 1: stä 5: een perussilmukan lauseen avulla. Tätä varten suoritamme seuraavan koodin.

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

Koodin selitys:

  • Koodirivi 2 : Ilmoitetaan muuttuja 'a' NUMBER-tietotyypiksi ja alustetaan se arvolla '1'.
  • Koodirivi 4 : Lausekkeen "Ohjelma aloitettu" tulostaminen.
  • Koodirivi 5: Avainsana LOOP merkitsee silmukan alkua.
  • Koodirivi 6: Tulostaa a-arvon.
  • Koodirivi 7: Lisää a-arvon arvoa +1.
  • Koodirivi 8: Tarkistaa, onko a: n arvo suurempi kuin 5.
  • Koodirivi 9: Avainsana END LOOP merkitsee suorituslohkon loppua.
  • Koodin riviltä 6 riville 8 jatketaan, kunnes 'a' saavuttaa arvon 6, kun ehto palauttaa TOSI ja ohjaus poistuu silmukasta.
  • Koodirivi 10: Lausunnon "Ohjelma valmis" tulostaminen

Silmukoiden merkitseminen

PL / SQL: ssä silmukat voidaan merkitä. Etiketin tulisi olla "<<" ja ">>" välissä. Silmukoiden merkitseminen erityisesti sisäkkäisissä silmukakoodeissa lisää luettavuutta. Tunniste voidaan antaa EXIT-komennossa poistuaksesi kyseisestä silmukasta. Etiketin avulla ohjaus voidaan tehdä poistumaan sisäkkäisten silmukoiden ulommasta silmukasta mistä tahansa silmukan sisällä olevasta paikasta antamalla exit-komento, jota seuraa ulomman silmukan tarra.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Syntaksi Selitys:
  • Yllä olevassa syntaksissa ulostulosilmukassa on vielä yksi silmukka.
  • '<>' ja '<>' ovat näiden silmukoiden tunnisteet.

Esimerkki 1 : Tässä esimerkissä aiomme tulostaa numeron alkaen 1: stä käyttäen Basic loop -sovellusta. Jokainen numero tulostetaan niin monta kertaa kuin arvo. Sarjan yläraja on kiinteä ohjelman ilmoitusosassa. Oppikaa, kuinka voimme käyttää tarrakonseptia tämän saavuttamiseksi. Tätä varten suoritamme seuraavan koodin

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

Koodin selitys:

  • Koodirivi 2-3 : Ilmoitetaan muuttujat 'a' ja 'b' NUMBER-tietotyypiksi.
  • Koodirivi 4 : Muuttujan 'upper_limit' ilmoittaminen tietotyypiksi 'NUMBER' arvolla '4'
  • Koodirivi 6 : Lausekkeen "Ohjelma aloitettu" tulostaminen.
  • Koodirivi 7: Ulkosilmukka on merkitty nimellä "external_loop"
  • Koodirivi 9: A-arvon arvoa lisätään yhdellä.
  • Koodirivi 11: Sisäinen silmukka on merkitty nimellä "inner_loop".
  • Koodirivi 13: EXIT-ehto, joka tarkistaa, onko arvo 'a' suurempi kuin 'upper_limit'. Jos ei, niin se menee pidemmälle, muuten se poistuu ulommasta silmukasta suoraan.
  • Koodirivi 14: b : n arvon tulostaminen.
  • Koodirivi 15: Lisää b : n arvoa +1.
  • Koodirivi 16: EXIT-ehto, joka tarkistaa, onko b: n arvo suurempi kuin a. Jos näin on, se sulkee ohjauksen sisäisestä silmukasta.
  • Koodirivi 14: Lausunnon "Ohjelma valmis" tulostaminen

Yhteenveto

Silmukka Perussilmukka
POISTUMISEHDOT Poistu kohdatessasi avainsanan 'EXIT' suoritusosassa
Käyttö Hyvä käyttää, kun poistuminen ei perustu mihinkään tiettyyn tilaan.