Selgesõnaline kursor vs kaudne kursor
Andmebaaside osas on kursor juhtimisstruktuur, mis võimaldab liikuda andmebaasi kirjetest üle. Kursor pakub mehhanismi nime määramiseks SQL-i väljavõtte avaldusele ja seda saab seejärel kasutada selle SQL-avalduses oleva teabe manipuleerimiseks. Kaudsed kursorid luuakse ja neid kasutatakse automaatselt iga kord, kui PL / SQL-is avaldatakse Select-käsk, kui selget kursorit pole. Nagu nimigi ütleb, määratleb otsesed kursorid arendaja selgesõnaliselt. PL / SQL-is on sõnaselge kursor tegelikult nimega päring, mis on määratletud võtmesõna kursori abil.
Mis on kaudne kursor?
Kaudsed kursorid loob ja kasutab Oracle automaatselt iga kord, kui väljavalitud avaldus väljastatakse. Kaudse kursori kasutamisel viib andmebaasihaldussüsteem (DBMS) automaatselt läbi avamise, tõmbamise ja sulgemise toimingud. Kaudseid kursoreid tuleks kasutada ainult SQL-lausetega, mis tagastavad ühe rea. Kui SQL-lause tagastab rohkem kui ühe rea, toob vaikse kursori kasutamine kaasa tõrke. Kaudne kursor seotakse automaatselt kõigi andmemanipulatsioonikeele (DML) avaldustega, nimelt INSERT, UPDATE ja DELETE avaldustega. Samuti kasutatakse kaudset kursorit SELECT INTO avalduste töötlemiseks. Andmete toomisel kaudsete kursorite abil võib erandi NO_DATA_FOUND tõsta, kui SQL-lause andmeid ei tagasta. Lisaks võivad kaudsed kursorid tõsta TOO_MANY_ROWS erandeid, kui SQL-lause tagastab rohkem kui ühe rea.
Mis on selgesõnaline kursor?
Nagu varem mainitud, on selgesõnalised kursorid nime abil määratletud päringud. Selgesõnalist kursorit võib pidada dokumendikomplekti osutiks ja kursorit saab kirjete komplektis edasi viia. Selgesõnalised kursorid annavad kasutajale täieliku kontrolli andmete avamise, sulgemise ja toomise üle. Ka mitut rida saab tuua selgesõnalise kursori abil. Selgesõnalised kursorid võivad võtta parameetreid nagu iga funktsioon või protseduur, nii et kursori muutujaid saab muuta iga kord, kui see käivitatakse. Lisaks võimaldavad selgesõnalised kursorid tuua terve rea PL / SQL-kirje muutujasse. Selge kursori kasutamisel tuleb see esmalt nime abil deklareerida. Kursori atribuutidele pääseb juurde, kasutades kursorile antud nime. Pärast deklareerimist tuleb esmalt avada kursor. Seejärel saab alustada hankimist. Kui tuleb tuua mitu rida, tuleb toomine teha silmuse sees. Lõpuks tuleb kursor sulgeda.
Erinevus selgesõnalise ja kaudse kursori vahel
Peamine erinevus kaudse ja selgesõnalise kursori vahel on see, et otsene kursor tuleb määratleda selgesõnaliselt, pakkudes nime, samas kui kaudsed kursorid luuakse automaatselt, kui väljastate valitud avalduse. Lisaks saab mitmete ridade sirvimist kasutada selgesõnaliste kursorite abil, kaudsete kursorite abil saab tuua ainult ühe rea. Ka NO_DATA_FOUND ja TOO_MANY_ROWS erandeid ei tõstata, kui kasutatakse selgesõnalisi kursoreid, mitte kaudseid kursoreid. Sisuliselt on kaudsed kursorid andmevigade suhtes haavatavamad ja pakuvad vähem programmilist kontrolli kui otsesed kursorid. Samuti peetakse kaudseid kursoreid vähem tõhusaks kui otsesuurusi.