FOR-silmukka

FOR-silmukka on kiistatta tärkein pl/pgSQL: ssä toteutettu silmukka. Käytä for loop iteroida lauseke lohko yli erilaisia kokonaislukuja, jotka määrität. FOR-silmukan rakenne PL/pgSQL: ssä on samanlainen kuin FORloops muissa prosessuaalisissa kielissä, kuten C.

pl / pgSQL: ssä silmukalle ilmoitetaan ensin kokonaislukumuuttuja, joka seuraa silmukan iteraatiota, sitten annetaan kokonaislukualue ja lopuksi lauselohko. Kokonaislukumuuttuja luotu totrack silmukan iteraatio tuhoutuu, kun silmukka poistuu; sitä ei tarvitse ilmoittaa lohkon ilmoitusosiossa. Seuraavassa esitetään FOR-silmukan syntaksi:

 FOR identifier IN expression1 .. expression2 LOOP statement; END LOOP;

FOR-silmukka suorittaa yhden iteraation jokaiselle tunnisteen korotetulle arvolle, joka on arvojen välillä ekspressio1 ja ekspressio2 mukaan lukien. Tunnistearvo alustetaan arvoon ekspressio1, riippumatta aiemmista asetuksista, ja lisätään yhdellä jokaista iteraatiota. Jos reverse on määritetty, tunniste pienenee eikä kasvata.

Huomautus: iteroinnin seurantaan käytettyä tunnistetta ei tarvitse ilmoittaa lohkon ulkopuolella, ellet halua käyttää sen arvoa silmukan loputtua.

FOR-silmukkaa voidaan käyttää myös kyselyn tulosten läpikäymiseen. Toinen silmukka esimerkissä 11-45 osoittaa afor-silmukan käyttämisen tietue-ja%ROWTYPE-muuttujien kanssa. For-silmukan syntaksi, joka koostuu TIETUEMUUTTUJISTA ja %ROWTYPE-muuttujista, esitetään seuraavassa syntaksissa:

 FOR { record_variable | %rowtype_variable } IN select_statement LOOP statement; END LOOP;

esimerkissä 11-45 käytetään extract_all_titles () – funktiota, joka extract_all_titles (), joka extract_all_titles () – funktiota, joka extract_all_titles () – funktiona, joka on järjestetty aiheittain. Kun aiheella ei ole kirjan otsikoita, näytetään ablank-rivi. Luettelo palautetaan tekstimuuttujana. FOR-silmukka hyödynnetään extract_all_titles () – funktion sisällä kierrättämään availablesubjektit numerolla.

toinen for loop on sisäkkäinen alkuperäisen silmukan sisällä, jotta se voi kiertää availablebooksin läpi ja hakea kaikki kirjat, joiden subject_id-arvot vastaavat alkuperäistä loop ’ siteration-muuttujaa, joka edustaa nykyisen kohteen ID-numeroa, jota funktio etsii. Esimerkissä 11-45 iteraatiomuuttuja I alustetaan nollaksi, koska aihetaulukkomme ensimmäinen subjektin ID-numero on 0.

esimerkki 11-46 näyttää toisen funktion koodin, joka käyttää aforisilmukkaa iteroidakseen SQL-kyselyn tulosten kautta. Jokaisen iteraation loopthe for silmukka esimerkissä 11-46 asettaa sisällön aresult rivin kyselyn vastaan kirjat taulu osaksi row_data muuttuja, ja sitten ilmoittaa arvon rivin otsikko kentän thetext_output muuttuja.

silmukka päättyy, kun viimeinen kirjoissa oleva ennätys saavutetaan. Silmukan loppuun mennessä text_output sisältää luettelon kaikista kirjan nimistä, jotka vastaavat funktioon merkittyä aihetunnistetta ID. Text_output-muuttuja palautetaan toiminnon lopussa.

esimerkki 11-47 näyttää extract_title () – funktion tulokset, Kun 2, joka aihetaulukossa edustaa”lastenkirjoja”, ohitetaan argumenttina.

row_data-muuttuja ilmoitetaan books-taulukon Rivinumerona ,koska sitä käytetään vain tietueiden säilyttämiseen books-taulukosta. Olisimme voineet julistaa row_datan arecordiksi saavuttaaksemme saman tuloksen, mutta tietuetyyppiä tulisi käyttää, kun käytät muuttujaa useammalle kuin yhden tietyn taulukon riveille:

row_data RECORD;

extract_title () – funktio palauttaa samat tulokset riippumatta siitä, ilmoitetaanko rivitiedot tietueeksi vai ilmoitetaanko ne käyttämällä%RIVITYYPPIÄ.

Vastaa

Sähköpostiosoitettasi ei julkaista.