Selgesõnaline kursor vs kaudne kursor
Andmebaaside osas on kursor juhtimisstruktuur, mis võimaldab andmebaasis olevate kirjete üle liikuda. Kursor pakub mehhanismi nime määramiseks SQL select-lause jaoks ja seejärel saab seda kasutada selles SQL-i lauses sisalduva teabe manipuleerimiseks. Kaudsed kursorid luuakse ja neid kasutatakse automaatselt iga kord, kui PL / SQL-is välja antakse Select-lause, kui selgesõnaliselt määratletud kursorit pole. Otsese kursori määrab arendaja selgesõnaliselt, nagu nimigi ütleb. PL / SQL-is on selgesõnaline kursor nimega päring, mis on määratletud võtmesõna kursori abil.
Mis on kaudne kursor?
Oracle loob ja kasutab kaudseid kursoreid automaatselt iga kord, kui välja antakse väljavõte. Kui kasutatakse kaudset kursorit, teostab andmebaasi haldussüsteem (DBMS) avamise, toomise ja sulgemise toimingud automaatselt. Kaudseid kursoreid tuleks kasutada ainult koos SQL-lausetega, mis tagastavad ühe rea. Kui SQL-käsk tagastab mitu rida, toob kaudse kursori kasutamine sisse tõrke. Kaudne kursor on automaatselt seotud iga andmemahelduse keele (DML) lausega, nimelt INSERT, UPDATE ja DELETE. Samuti kasutatakse SELECT INTO-lausete töötlemiseks kaudset kursorit. Andmete toomisel kaudsete kursorite abil saab NO_DATA_FOUND tõsta erandi, kui SQL-lause ei anna andmeid. Lisakskaudsed kursorid võivad tõsta TOO_MANY_ROWS erandeid, kui SQL-lause annab 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 kirjekomplekti kursoriks ja kursorit saab kirjekomplekti sees edasi liikuda. Selged kursorid võimaldavad kasutajal täielikku kontrolli andmete avamise, sulgemise ja toomise üle. Samuti saab selgesõnalise kursori abil tuua mitu rida. Selgesõnalised kursorid võivad võtta parameetreid nagu iga funktsioon või protseduur, nii et kursori muutujaid saab iga kord, kui see käivitatakse, muuta. Lisaks võimaldavad selgesõnalised kursorid tuua terve rida PL / SQL-kirjemuutujasse. Selgesõnalise kursori kasutamisel tuleb see kõigepealt deklareerida nime abil. Kursori atribuutidele pääseb juurde, kasutades kursorile antud nime. Pärast deklareerimist tuleb kõigepealt kursor avada. Siis saab toomist alustada. Kui tuleb tuua mitu rida, tuleb toomistoiming teha silmuse sees. Lõpuks tuleb kursor sulgeda.
Erinevus selgesõnalise kursori ja kaudse kursori vahel
Peamine erinevus kaudse kursori ja otsese kursori vahel seisneb selles, et otsene kursor tuleb määratleda selgesõnaliselt, sisestades nime, samas kui vaikimisi kursorid luuakse automaatselt, kui väljastate valitud lause. Lisaks saab selgesõnaliste kursorite abil tuua mitu rida, samas kui kaudsed kursorid saavad tuua ainult ühe rea. Samuti ei tehta eksplitsiitsete kursorite kasutamisel erandeid NO_DATA_FOUND ja TOO_MANY_ROWS, vastupidiselt implitsiitsetele kursoritele. Sisuliselt on kaudsed kursorid andmevigade suhtes haavatavamad ja pakuvad vähem programmilist juhtimist kui selgesõnalised kursorid. Samuti peetakse kaudseid kursoreid vähem efektiivseteks kui eksplitsiitsed kursorid.