Oracle PL/SQL-Kursori: Implisiittinen, Eksplisiittinen, Kursori Loop [Esimerkki]
Mikä on kun KURSORI PL/SQL?
kohdistin on osoitin tähän kontekstialueeseen. Oracle luo kontekstialueen SQL-lausuman käsittelyyn, joka sisältää kaikki tiedot lausumasta.
PL / SQL sallii ohjelmoijan ohjata kontekstialuetta kursorin kautta. Kohdistin pitää SQL-lausuman palauttamia rivejä. Kohdistimen hallussa olevaa rivijoukkoa kutsutaan aktiiviseksi joukoksi., Nämä kursorit voidaan myös nimetä niin, että ne voidaan viitata toisesta koodin paikasta.
tässä opetusohjelmassa opit, –
- Implisiittinen Kursori
- Avointa Kohdistin
- Kohdistin Ominaisuuksia
- Silmukka Kohdistin selvitys
kursori on kahta tyyppiä.
- Implisiittinen Kursori
- Avointa Kohdistin
Implisiittinen Kursori
Kun DML-operaatioita esiintyä tietokannassa, implisiittinen kursori on luotu, joka pitää riviä vaikuttaa, että erityisesti toiminta., Näitä kursoreita ei voida nimetä, joten niitä ei voida valvoa tai ohjata koodin toisesta paikasta. Voimme viitata vain viimeisimpään kursoriin kohdistimen attribuuttien kautta.
Eksplisiittinen Osoitin
Ohjelmoijat voivat luoda nimeltä yhteydessä alue suorittaa heidän DML-operaatioita saada enemmän hallintaansa. Nimenomainen kohdistimen tulee olla määritelty ilmoitus-osiossa PL/SQL-lohkon, ja se on luotu ”VALITSE” lausunto, joka on käytettävä koodi.
alla on askeleita, jotka liittyvät työskentelyyn eksplisiittisten kursorien kanssa.,
- Julistamisesta osoitin
Julistamisesta osoitin tarkoittaa yksinkertaisesti luoda yksi nimeltä yhteydessä alue ”VALITSE” lausunto, joka on määritelty ilmoitus osa. Tämän kontekstialueen nimi on sama kuin kursorin nimi.
- Avaa Kohdistimen
Avaa kohdistimen neuvoo PL/SQL-jakaa muistin tämän kohdistin. Se tekee kursorin valmiina hakemaan tietueet.
- Hakemalla Tietoja Kohdistimen
tässä prosessissa, ”VALITSE” lausunto on toteutettu ja rivit haettu on tallennettu varattu muisti., Näitä kutsutaan nyt aktiivisiksi sarjoiksi. Tietojen hakeminen kursorista on tietuetason toimintaa, joka tarkoittaa, että voimme käyttää tietoja ennätyskohtaisesti.
jokainen noutolauseke hakee yhden aktiivisen setin ja pitää hallussaan kyseisen tietueen tietoja. Tämä lausuma on sama kuin ”valitse” – lauseke, joka hakee tietuetta ja osoittaa muuttujan ”INTO” – lausekkeessa, mutta se ei heitä poikkeuksia.
- Sulkeminen Kohdistin
Kun kaikki ennätys on haettu nyt, meidän täytyy sulkea kursoria niin, että muisti jaetaan tässä yhteydessä alue vapautetaan.,
Syntax:
- edellä syntaksi, ilmoitus osa sisältää julistuksen kursori ja kursorin muuttujan, joka haki tiedot, osoitetaan.
- kursori luodaan kohdistimen ilmoituksessa annetulle ”valitse” – lausekkeelle.
- suoritusosassa ilmoitettu kursori avataan, haetaan ja suljetaan.
Kohdistin Ominaisuuksia
Molemmat Implisiittinen kursori ja yksiselitteinen kohdistin on tiettyjä ominaisuuksia, joita voidaan käyttää. Nämä ominaisuudet antavat lisätietoja kohdistimen toiminnasta., Alla on eri kohdistin attribuutit ja niiden käyttö.
Kohdistin Ominaisuus | Kuvaus |
%LÖYTYNYT | Se palauttaa Boolean tulos ”TRUE”, jos viimeisin noutaa toiminta haki ennätykselliset onnistunut, muuten se palauttaa FALSE. |
%NOTFOUND | Tämä toimii vastakkaisesti to %TOTESI, se palauttaa ”TRUE”, jos viimeisin noutaa toiminta ei voi hakea mikä tahansa ennätys., |
%avoin kaikille | Se palauttaa Boolean tulos ”TRUE”, jos annettu kursori on jo avattu, muuten se palauttaa arvon ”FALSE” |
%ROWCOUNT | Se palauttaa numeerinen arvo. Se antaa todellisen määrän tietueita, jotka saivat vaikuttaa DML toimintaa. |
Esimerkki 1: tässä esimerkissä aiomme nähdä miten julistaa, open, fetch ja close yksiselitteinen kohdistin.
projisoimme EMP-taulukosta koko työntekijän nimen kursorin avulla., Käytämme myös cursor-attribuuttia silmukan asettamiseen, jotta voimme noutaa kaikki tietueet kursorista.
Lähtö
Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY Total rows fetched is 3
– Koodi Selitys:
- Koodin rivi 2: Julistaa kohdistin guru99_det lausuntoa ’VALITSE emp_name ALKAEN emp’.
- koodirivi 3: ilmoitetaan muuttuja lv_emp_name.
- koodirivi 5: kursorin avaaminen guru99_det.
- koodirivi 6: perussilmukkalausekkeen asettaminen hakemaan kaikki ” emp ” – taulukon tietueet.,
- koodirivi 7: hakee guru99_det-tiedot ja antaa arvon lv_emp_namelle.
- Koodin rivi 9: Käyttämällä kohdistimen attribuutti ’%NOTFOUND’ löytää, onko kaikki ennätys kohdistin on haettu. Jos haetaan niin se tulee palauttaa ’TRUE’ ja ohjaus tulee poistua silmukka, muu ohjaus tulee pitää hakemalla tietoja kohdistimen ja tulostaa tiedot.
- Koodilinja 11: poistumisehto silmukkalausekkeelle.
- koodilinja 12: tulosta haettu työntekijän nimi.,
- Koodin rivi 14: Käyttämällä kohdistimen attribuutti ’%ROWCOUNT’ löytää kokonaismäärä kirjaa, joka on vaikuttanut/haettu kohdistin.
- koodirivi 15: silmukasta poistumisen jälkeen kursori suljetaan ja kohdistettu muisti vapautetaan.
Silmukka Kohdistin lausunto
”SILMUKAN” julkilausuman voidaan käyttää kanssa osoittimet. Voimme antaa kohdistin nimen sijasta alue raja silmukka lausunto niin, että silmukka toimii kuin ensimmäinen levy kursori viime ennätys osoitinta., Kohdistinmuuttuja, kursorin avaaminen, kursorin noutaminen ja sulkeminen tehdään implisiittisesti for Loopilla.
Syntax:
DECLARECURSOR <cursor_name> IS <SELECT statement>;BEGIN FOR I IN <cursor_name> LOOP . . END LOOP;END;
- edellä syntaksi, ilmoitus osa sisältää julistuksen kohdistin.
- kursori luodaan kohdistimen ilmoituksessa annetulle ”valitse” – lausekkeelle.
- suoritusosassa ilmoitettu kursori on asetettu for loopiin ja silmukkamuuttuja ” I ” käyttäytyy tässä tapauksessa kursorimuuttujana.,
Esimerkki 1: tässä esimerkissä, me hankkeen kaikki työntekijän nimi emp-taulukko käyttäen kohdistin-silmukka.
Lähtö
Employee Fetched:BBB Employee Fetched:XXXEmployee Fetched:YYY
– Koodi Selitys:
- Koodin rivi 2: Julistaa kohdistin guru99_det lausuntoa ’VALITSE emp_name ALKAEN emp’.
- Koodin rivi 4: Rakentaa ”PUOLESTA” silmukka kursori silmukkamuuttujan lv_emp_name.
- Koodilinja 5: työntekijän nimen painaminen jokaiseen silmukan iteraatioon.,
- Koodin rivi 8: sulje silmukka
Huomautus: kun Kohdistin-silmukka, kohdistin ominaisuuksia ei voi käyttää, koska aukko, hakemalla ja sulkeminen kursori on tehnyt implisiittisesti silmukka.