PL / SQL-kohdistin

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:

  1. Palauta kaikkien asiakkaiden luottorajat nollaksi.
  2. 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

Leave a Reply

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *