Yhteenveto: Tässä opetusohjelmassa opit PL / SQL-kohdistimesta ja sen käytöstä.
Kohdistin on osoitin, joka osoittaa kyselyn tuloksen. PL / SQL: llä on kahden tyyppisiä kohdistimia: implisiittiset kohdistimet ja eksplisiittiset kohdistimet.
Implisiittiset kohdistimet
Aina kun Oracle suorittaa SQL-käskyn, kuten SELECT INTO, INSERT, UPDATE ja DELETE, se luo automaattisesti implisiittisen kohdistimen.
Oracle hallitsee sisäisesti implisiittisten kohdistinten koko suoritusjaksoa ja paljastaa vain kursorin tiedot ja tilat, kuten SQL%ROWCOUNT, SQL%ISOPEN, SQL%FOUND ja SQL%NOTFOUND.
implisiittinen kohdistin ei ole tyylikäs, kun kysely palauttaa nollan tai useita rivejä jotka aiheuttavat NO_DATA_FOUND tai TOO_MANY_ROWS poikkeuksen.
eksplisiittiset kohdistimet
eksplisiittinen kohdistin on SELECT -lauseke, joka on nimenomaisesti ilmoitettu nykyisen lohkon tai pakettimäärityksen ilmoitusosassa.
eksplisiittisen kohdistimen kohdalla rol sen suoritussyklin aikana kohdasta OPEN, FETCH ja CLOSE.
Oracle määrittelee suoritussyklin, joka suorittaa SQL-käskyn ja liittää siihen kohdistimen.
Seuraava kuva näyttää eksplisiittisen kohdistimen suoritusjakson:
Tarkastellaan jokaista vaihetta yksityiskohtaisesti.
Julista kohdistin
Ennen eksplisiittisen kohdistimen käyttöä sinun on ilmoitettava se lohkon tai paketin ilmoitusosassa seuraavasti:
Tässä syntaksissa :
- Määritä ensin kohdistimen nimi avainsanan
CURSORjälkeen. - Toiseksi määritä kysely tietojen noutamiseksi. avainsanan
ISjälkeen.
Avaa kohdistin
Ennen kuin aloitat rivien hakemisen kohdistimesta, sinun on avattava se. Kursorin avaamiseen käytetään seuraavaa syntaksia:
Tässä syntaksissa cursor_name on nimi ilmoitusosassa ilmoitetun kohdistimen.
Kun avaat kohdistimen, Oracle jäsentää kyselyn, sitoo muuttujat ja suorittaa siihen liittyvän SQL-käskyn.
Oracle määrittää myös suoritussuunnitelman , yhdistää isäntämuuttujat ja kohdistinparametrit SQL-käskyn paikkamerkkeihin, määrittää tulosjoukon ja asettaa kohdistimen tulosjoukon ensimmäiselle riville.
Lisätietoja parametrisoidusta kohdistimesta seuraavassa opetusohjelmassa.
Hae kohdistimelta
Lauseke FETCH sijoittaa nykyisen rivin sisällön muuttujiksi. FETCH -lausekkeen syntaksi on seuraava:
Jos haluat hakea kaikki tulosjoukon rivit, tarvitset noutaa kukin rivi viimeiseen asti.
Kohdistimen sulkeminen
Kun olet noutanut kaikki rivit, sinun on suljettava kohdistin CLOSE lauseke:
Kohdistimen sulkeminen kehottaa Oraclea vapauttamaan varatun muistin sopivana ajankohtana.
Jos ilmoitat kohdistimen nimettömän eston, menettelyn tai toiminnon avulla kohdistin sulkeutuu automaattisesti, kun näiden objektien suoritus loppuu.
Sinun on kuitenkin suljettava nimenomaisesti pakettipohjaiset kohdistimet. Huomaa, että jos suljet kohdistimen, jota ei ole vielä avattu, Oracle nostaa INVALID_CURSOR -poikkeuksen.
Kohdistimen nimenomaiset määritteet
Kohdistin on neljä määritettä, joihin voit viitata seuraavassa muodossa:
jossa cursor_name on eksplisiittinen kohdistin.
1)% ISOPEN
Tämä attribuutti on TRUE, jos kohdistin on auki tai FALSE jos se ei ole.
2)% FOUND
Tällä määritteellä on neljä arvoa:
-
NULLennen ensimmäistä hakua -
TRUEjos tietue noudettiin onnistuneesti -
FALSEjos yhtään riviä ei palautettu -
INVALID_CURSORjos kohdistinta ei avata
3)% NOTFOUND
Tällä määritteellä on neljä arvoa:
-
NULLennen ensimmäistä hakua -
FALSEjos tietue noudettiin succ olennaisesti -
TRUEjos yhtään riviä ei palautettu -
INVALID_CURSORjos kohdistinta ei avata
3)% ROWCOUNT
%ROWCOUNT -attribuutti palauttaa kohdistimelta haettujen rivien määrän. Jos kohdistinta ei avata, tämä attribuutti palauttaa INVALID_CURSOR.
PL / SQL-kohdistimen esimerkki
Käytämme taulukoita orders ja order_items esimerkkitietokanta esittelyä varten.
Seuraava lausunto luo näkymän, joka palauttaa asiakkaiden myyntitulot:
Luotto-sarakkeen arvot ovat 5% kokonaismyynnistä.
Oletetaan, että sinun on kehitettävä tuntematon estä se:
- Palauta kaikkien asiakkaiden luottorajat nollaksi.
- Hae asiakkaita lajiteltuina myynnin mukaan laskevassa järjestyksessä ja antaa heille uudet luottorajat miljoonan euron budjetista.
Seuraava anonyymi lohko kuvaa logiikkaa:
Deklarointiosassa ilmoitetaan kolme muuttujaa.
Ensimmäinen on l_budget jonka alkuperäinen arvo on 1,000,000.
Toinen muuttuja on nimenomainen kohdistinmuuttuja nimeltä c_sales jonka -lauseke hakee tietoja sales -näkymästä:
Kolmas muuttuja on kohdistinpohjainen tietue nimeltä c_sales.
Suoritus-osiossa suoritetaan seuraava:
- Palauta ensin luottorajat kaikkien asiakkaiden nollata
UPDATE-lausekkeen avulla. - Avaa sitten
c_sales-kohdistin. - Kolmanneksi, hae kukin rivi kohdistimesta. Jokaisessa silmukka-iteraatiossa päivitämme luottorajaa ja pienennämme budjettia. Silmukka päättyy, kun haettavaa riviä ei ole tai budjetti on käytetty.
- Sulje lopuksi kohdistin.
Seuraava kysely hakee tietoja customers taulukko päivityksen vahvistamiseksi:
Tulos:
Kuten tuloksesta selvästi näkyy, luottorajat ovat vain muutamalla ensimmäisellä asiakkaalla. Jos lasket yhteen kaikki luottorajat, kokonaissumman tulisi olla miljoona seuraavalla tavalla:
Nyt , sinun tulisi ymmärtää PL / SQL-kohdistimet, mukaan lukien implisiittiset ja eksplisiittiset kohdistimet, ja miten niitä voidaan käyttää tehokkaasti tietojen käsittelyyn rivi riviltä taulukosta.
- Oliko tästä oppaasta hyötyä?
- KylläEi