Eksplicitni pokazivač vs implicitni pokazivač
Kad je riječ o bazama podataka, kursor je upravljačka struktura koja omogućuje kretanje po zapisima u bazi podataka. Kursor pruža mehanizam za dodjelu imena SQL odabiru izjavi i tada se može koristiti za manipuliranje informacijama unutar te SQL izjave. Implicitni kursori automatski se stvaraju i koriste svaki put kad se izdaje Izjava Select u PL / SQL, kad nema izričito definiran kursor. Izričite kursore, kao što ime sugerira, programer izričito definira. U PL / SQL eksplicitni pokazivač zapravo je imenovani upit definiran korištenjem pokazivača ključne riječi.
Što je implicitni pokazivač?
Oracle automatski izrađuje i koristi implicitne pokazivače pri svakom izdavanju izjave o odabiru. Ako se koristi implicitni pokazivač, sustav upravljanja bazama podataka (DBMS) automatski će obavljati operacije otvaranja, dohvaćanja i zatvaranja. Implicitni pokazivači trebaju se koristiti samo sa SQL izjavama koje vraćaju jedan redak. Ako SQL izraz vrati više reda, korištenje implicitnog pokazivača uvest će pogrešku. Implicitni kursor automatski se povezuje sa svim izjavama DML (Data Manipulation Language), naime stavkama INSERT, UPDATE i DELETE. Također, implicitni kursor koristi se za obradu izraza SELECT INTO. Pri dohvaćanju podataka pomoću implicitnih pokazivača NO_DATA_FOUND iznimka se može podići kad SQL izraz ne vrati podatke. Nadalje, implicitni kursori mogu povećati TOO_MANY_ROWS iznimke kada SQL izraz vrati više reda.
Što je eksplicitni kursor?
Kao što je spomenuto ranije, eksplicitni kursori su upiti definirani pomoću imena. Izričiti pokazivač može se smatrati pokazivačem na skup zapisa, a pokazivač se može pomicati prema naprijed unutar skupa zapisa. Eksplicitni kursori pružaju korisniku potpunu kontrolu nad otvaranjem, zatvaranjem i dohvaćanjem podataka. Također, više se redaka može dohvatiti pomoću eksplicitnog pokazivača. Eksplicitni kursori mogu također uzimati parametre kao i bilo koja funkcija ili postupak tako da se varijable u pokazivaču mogu mijenjati svaki put kad se izvrši. Pored toga, eksplicitni kursori omogućuju vam da dovedete cijeli red u PL / SQL varijablu zapisa. Kada koristite eksplicitni pokazivač, prvo ga treba deklarirati pomoću imena. Atributima pokazivača može se pristupiti korištenjem imena koje je dodijeljeno pokazivaču. Nakon proglašenja, pokazivač se prvo mora otvoriti. Tada se može pokrenuti dohvaćanje. Ako je potrebno dohvatiti više redova, operaciju dohvaćanja treba obaviti unutar petlje. Na kraju, pokazivač treba biti zatvoren.
Razlika između eksplicitnog kursora i implicitnog kursora
Glavna razlika između implicitnog kursora i eksplicitnog kursora je da se eksplicitni kursor mora izričito definirati unošenjem imena, dok se implicitni pokazivači automatski kreiraju kad izdajete naredbu za odabir. Nadalje, više redova može se dobiti pomoću eksplicitnih kursora, dok implicitni kursori mogu dohvatiti samo jedan redak. Također NO_DATA_FOUND i TOO_MANY_ROWS iznimke se ne povećavaju kada se koriste eksplicitni kursori, za razliku od implicitnih pokazivača. U osnovi, implicitni kursori osjetljiviji su na pogreške u podacima i pružaju manje programske kontrole od eksplicitnih kursora. Također, implicitni pokazivači smatraju se manje učinkovitima od eksplicitnih kursora.