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
CURSOR
jälkeen. - Toiseksi määritä kysely tietojen noutamiseksi. avainsanan
IS
jä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:
-
NULL
ennen ensimmäistä hakua -
TRUE
jos tietue noudettiin onnistuneesti -
FALSE
jos yhtään riviä ei palautettu -
INVALID_CURSOR
jos kohdistinta ei avata
3)% NOTFOUND
Tällä määritteellä on neljä arvoa:
-
NULL
ennen ensimmäistä hakua -
FALSE
jos tietue noudettiin succ olennaisesti -
TRUE
jos yhtään riviä ei palautettu -
INVALID_CURSOR
jos 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