PL / SQL – Kohdistimet
Tässä luvussa keskustellaan kohdistimista PL / SQL: ssä. Oracle luo muistialueen, joka tunnetaan nimellä kontekstialue, SQL-käskyn käsittelyä varten, joka sisältää kaikki käskyn käsittelyyn tarvittavat tiedot; esimerkiksi käsiteltyjen rivien määrä jne.
Kohdistin on osoitin tälle kontekstialueelle. PL / SQL ohjaa kontekstialuetta kohdistimen kautta. Kohdistin pitää SQL-käskyn palauttamat rivit (yhden tai useamman). Kohdistimen pitämiä rivejä kutsutaan aktiivisiksi ryhmiksi.
Voit nimetä kohdistimen siten, että siihen voidaan viitata ohjelmassa hakemaan ja käsittelemään SQL-käskyn palauttamia rivejä. kerrallaan. Kohdistimia on kahden tyyppisiä –
- implisiittisiä kohdistimia
- eksplisiittisiä kohdistimia
implisiittisiä kohdistimia
implisiittisiä kohdistimia Oracle luo automaattisesti, kun SQL-käsky suoritetaan, kun käskylle ei ole nimenomaista kohdistinta. Ohjelmoijat eivät voi hallita implisiittisiä kohdistimia ja siinä olevia tietoja.
Aina kun DML-käsky (INSERT, UPDATE ja DELETE) annetaan, implisiittinen kohdistin liitetään tähän lausekkeeseen. INSERT-toiminnoissa kohdistin sisältää lisättävät tiedot. UPDATE- ja DELETE-toiminnoissa kohdistin tunnistaa rivit, joihin se vaikuttaa.
PL / SQL: ssä voit viitata viimeisimpään implisiittiseen kohdistimeen SQL-kohdistimena, jolla on aina määritteitä kuten% FOUND ,% ISOPEN,% NOTFOUND ja% ROWCOUNT. SQL-kohdistimessa on muita määritteitä,% BULK_ROWCOUNT ja% BULK_EXCEPTIONS, jotka on suunniteltu käytettäväksi FORALL-käskyn kanssa. Seuraava taulukko sisältää eniten käytettyjen määritteiden kuvauksen –
S.Ei | Attribuutti & Kuvaus |
---|---|
1 |
% FOUND Palauttaa arvon TOSI, jos INSERT-, UPDATE- tai DELETE-käsky vaikutti yhteen tai useampaan riviin tai SELECT INTO-käsky palautti yhden tai useamman rivin. Muussa tapauksessa se palauttaa EPÄTOSI. |
2 |
% NOTFOUND Looginen vastakohta kohteelle% FOUND. Se palauttaa arvon TOSI, jos INSERT-, UPDATE- tai DELETE-käsky ei vaikuttanut riveihin tai SELECT INTO -käsky ei palauttanut rivejä. Muussa tapauksessa se palauttaa EPÄTOSI. |
3 |
% ISOPEN Palaa epäsuorille kohdistimille aina FALSE, koska Oracle sulkee SQL-kohdistimen automaattisesti sen yhteydessä, kun siihen liittyvä SQL-käsky on suoritettu. |
4 |
% ROWCOUNT Palauttaa rivien määrän, johon INSERT-, UPDATE- tai DELETE-käsky vaikuttaa tai jonka SELECT INTO-käsky palauttaa. |
Kaikkia SQL-kohdistimen määritteitä käytetään nimellä sql% attribute_name, kuten alla olevassa esimerkissä esitetään.
Esimerkki
Käytämme ASIAKKAAT-taulukkoa, jonka olimme luoneet ja käyttäneet edellisissä luvuissa.
Seuraava ohjelma päivittää taulukon ja nostaa kunkin asiakkaan palkkaa 500: lla ja käyttää SQL%: ta ROWCOUNT-määritteellä määritetään rivien lukumäärä –
Kun yllä oleva koodi suoritetaan SQL-kehotteessa, se tuottaa seuraavan tuloksen –
6 customers selected PL/SQL procedure successfully completed.
Jos tarkistat tietueet asiakastaulukossa, huomaat, että rivit on päivitetty –
eksplisiittiset kohdistimet
eksplisiittiset kohdistimet ovat ohjelmoijan määrittämiä kursoreita hallinnan parantamiseksi kontekstialueella. PL / SQL-lohkon ilmoitusosassa tulisi määritellä selkeä kohdistin. Se luodaan SELECT-lauseessa, joka palauttaa useamman kuin yhden rivin.
Syntaksi eksplisiittisen kohdistimen luomiseen on –
CURSOR cursor_name IS select_statement;
Toimii nimenomaisella kohdistimella sisältää seuraavat vaiheet –
- Kohdistimen ilmoittaminen muistin alustamiseksi
- Kohdistimen avaaminen muistin varaamiseksi
- Kohdistimen hakeminen tietojen noutamiseksi
- Kohdistimen sulkeminen vapauttamaan varattu muisti
Kohdistimen julistaminen
Kohdistimen ilmoittaminen määrittää kohdistimen nimellä ja liittyvä SELECT-käsky. Esimerkiksi –
CURSOR c_customers IS SELECT id, name, address FROM customers;
Kohdistimen avaaminen
Kohdistimen avaaminen kohdistaa kohdistimen muistin ja tekee sen valmiiksi palautettujen rivien noutamiseen SQL-käskyn avulla. Avaamme esimerkiksi yllä määritetyn kohdistimen seuraavasti:
OPEN c_customers;
Kohdistimen hakeminen
Kohdistimen hakeminen edellyttää yhden rivin käyttämistä osoitteessa aika. Haemme esimerkiksi rivejä yllä avatusta kohdistimesta seuraavasti:
FETCH c_customers INTO c_id, c_name, c_addr;
Kohdistimen sulkeminen
Kohdistimen sulkeminen tarkoittaa vapauttamista varattu muisti.Esimerkiksi suljetaan yllä avattu kohdistin seuraavasti –
CLOSE c_customers;
Esimerkki
Seuraava on täydellinen esimerkki käsitteiden havainnollistamiseksi eksplisiittisistä kohdistimista & minua;
Kun yllä oleva koodi suoritetaan SQL-kehotteessa, se tuottaa seuraavan tuloksen –
1 Ramesh Ahmedabad 2 Khilan Delhi 3 kaushik Kota 4 Chaitali Mumbai 5 Hardik Bhopal 6 Komal MP PL/SQL procedure successfully completed.