Sissejuhatus kursoritesse PL / SQL-is
PL / SQL on andmebaaside programmeerimisel üks enim kasutatud programmeerimiskeeli. Mõningaid olulisi PL / SQL-kontseptsioone peab PL / SQL-programmeerija õppima ja neist selgelt aru saama, et neid õigesti kasutada. Kursor on üks neist. PL / SQL-programmis tuleb SQL-avaldused lõpus täita. Kursor on täpselt nagu osuti, mida kasutatakse kontekstiala osutamiseks ja mille Oracle on loonud SQL-i väljavõtte täitmiseks. Kursor hoiab kõiki SQL-lausete töötlemise järel tagastatud ridu. Rea komplekti, mida hoiab kursor, nimetatakse aktiivseks komplektiks. Kursori võib nimetada ka selleks, et seda programmeerija programmis edasi kasutada. Selles teemas õpime kursorite kohta PL / SQL-is.
Kursorite tüübid
PL / SQL programmeerimisel kasutatakse kahte tüüpi kursoreid:
1. Kaudsed kursorid
Nagu nimest selgub, on kaudsed kursorid need, mille Oracle loob automaatselt, kui täidetakse selliseid DML-avaldusi nagu INSERT, DELETE, UPDATE. Kui programmeerija ei loo kursorit, loob Oracle ise selle, et hoida DML-i avaldustega mõjutatud ridu. Programmeerija ei saa neid kursoreid nimetada ja seetõttu ei saa neid koodis teises kohas kasutada ega kasutada. Kuigi Oracle pakub mõningaid atribuute, et teha sellega mingeid toiminguid
% LEITUD, % EI OLE, % ROWCOUNT, % ISOPEN.
S.N. | Atribuut | Kirjeldus |
1 | % LEITUD | Tagastab tõesuse, kui DML-i avaldused nagu INSERT,
DELETE, UPDATE mõjutavad ühte või mitut rida või SELECT avaldus tagastab ühe või mitu rida. Vastasel juhul tagastab see vale |
2 | %EI LEITUD | See on atribuudile% FOUND vastupidine. Tagastab väärtuse True, kui DML-avaldus ei mõjuta ühtegi rida või kui SELECT-lause ei anna tulemusi. Vastasel juhul tagastab see vale. |
3 | %ON AVATUD | Kaudsete kursorite korral tagastab see alati vale (False), sest Oracle sulgeb kursori vahetult pärast SQL-i avalduste täitmist. |
4 | % ROWCOUNT | See tagastab ridade arvu. St nende ridade arv, mida nimetatud DML mõjutab |
programmeerija avaldused PL / SQL-koodis nagu INSERT, DELETE ja UPDATE või ridade arv, mis tagastatakse SELECT INTO avaldusega. |
Näide
Stsenaarium: värskendada kõigi õpilaste hindeid inglise keeles tabelis „õpilane”, mille veerus „teema” on 10.
DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/
2. Selgesõnalised kursorid
Selgesõnalised kursorid on need kursorid, mille programmeerijad on määranud omama suuremat kontrolli kontekstiala üle (kus talletatakse SQL päringute tulemusi). Need kursorid tuleb kõigepealt määratleda PL / SQL-programmi deklaratsiooniplokis. See on loodud SQL-i avalduste jaoks, mis tagastavad pärast töötlemist rohkem kui ühe rea. Selgesõnalise kursori kasutamiseks tuleb järgida konkreetset protseduuri. Allpool mainitakse selgesõnalise kursori kasutamist.
1. Kuulutage kursor: seda kasutatakse kontekstialale / kursorile nime andmiseks koos valitava avaldusega, mis tuleb täita.
Süntaks
CURSOR cursor_name IS SELECT statement;
2. Avage kursor: Avage kursor, eraldage sellele mälu ja tehke see kättesaadavaks SQL-i väljavõttega tagastatud kirjete hankimiseks.
Süntaks
OPEN cursor_name;
3. Tooge kursor: selles protsessis pääseb korraga juurde ühele reale. Käsk SELECT käivitatakse ja tõmmatud read salvestatakse kontekstialasse. See tõmbab kirjed ja määrab need määratletud muutujale.
Süntaks
FETCH cursor_name INTO variable;
4. Kursori sulgemine: seda sammu kasutatakse ülal avatud kursori sulgemiseks, et mälu uuesti paigutada, kui kõik salvestatud read on edukalt tõmmatud.
Süntaks
CLOSE cursor_name;
Näide
Stsenaarium: hankige tabelist õpilaste nimi, aadress ja üldine protsent
'õpilane', millel on veerud 'nimi', 'aadress' ja 'protsent'
DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/
Kursori toimingud
Erinevalt SQL-ist, mis töötab kõigil ridadel korraga seatud tulemustel, kasutatakse kursorit peamiselt stsenaariumides, kui programmeerija soovib töödelda ja hankida ühe rea andmeid korraga.
Allpool on toodud mõned kursori toimingud:
- Kursori kuulutamine: Enne selle kasutamist on oluline kursor kuulutada. Kursor kuulutatakse töödeldava SQL-lause määratlemisega.
- Kursori avamine: Pärast deklareerimist avatakse ja SQL-avalduse töötlemisel andmete tagastamisega kursor.
- Kursori toomine : pärast kursori avamist tuleb väljundriigid ükshaaval tõmmata, et vajadusel toiminguid teha.
- Kursori sulgemine: pärast kõigi andmetega manipuleerimist. Loodud kursor tuleb sulgeda
- Deallocate: see samm hõlmab kursori kustutamist ja vabastab kõik sellel olevad ressursid.
Kursori olulisus PL / SQL-is
Mäluasukohale osutamine ja vastavalt toimingute tegemine on mis tahes programmeerimiskeele oluline ülesanne. PL / SQL-is teevad seda kursorid. Kursorid mängivad erineva ülesande täitmisel üliolulist rolli, andes nime mälualale (kontekstialale), kuhu SQL päringute tulemused salvestatakse. Saame ükshaaval juurde pääseda dokumentidele ja vajadusel sellega manipuleerida või vastavalt konsoolile kuvada. Selgesõnalised kursorid on tõhusamad, annavad programmilisemat kontrolli ja on vähem tundlikud andmevigade suhtes, nii et need on PL / SQL-i programmeerimisel väga kasulikud kui kaudsed.
Järeldus
Andmebaaside programmeerimine on tänapäeval väga populaarne ja PL / SQL on üks keeltest, mida tuleks selles väga hästi kasutada. Kursorid võimaldavad programmeerijal rohkem kontrolli otsitud andmetele juurde pääseda. Et programmeerija töötaks PL / SQL-iga, on oluline teada kursori kasutamist ja olulisust efektiivseks tööks.
Soovitatavad artiklid
See on PL / SQL-i kursorite juhend. Siin käsitleme kursori tüüpe, mida PL / SQL programmeerimisel kasutatakse kursori toimingutega, ja kursori olulisust. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -
- Liitumiste tüübid SQL-is
- SQL-i sisestuspäring
- Tabel SQL-is
- Metamärk SQL-is
- MySQL-i 6 parimat liitumistüüpi koos näidetega