Eksplicitni pokazivač vs implicitni pokazivač
Kada je riječ o bazama podataka, kursor je upravljačka struktura koja omogućuje prelazak preko zapisa u bazi podataka. Kursor pruža mehanizam za dodjeljivanje imena SQL naredbi za odabir, a zatim se pomoću njega može manipulirati informacijama unutar tog SQL izraza. Implicitni kursori se automatski izrađuju i koriste svaki put kad se izda naredba Select u PL / SQL, kada nema izričito definiranog kursora. Eksplicitne kursore, kao što i samo ime govori, programer eksplicitno definira. U PL / SQL eksplicitni pokazivač zapravo je imenovani upit definiran pomoću kursora ključne riječi.
Što je implicitni pokazivač?
Implicitne kursore automatski stvara i koristi Oracle svaki put kada se izda izjava za odabir. Ako se koristi implicitni kursor, Sustav upravljanja bazom podataka (DBMS) automatski će izvršiti operacije otvaranja, dohvaćanja i zatvaranja. Implicitni pokazivači trebaju se koristiti samo s SQL izrazima koji vraćaju jedan red. Ako SQL izraz vrati više od jednog retka, upotreba implicitnog kursora uvest će u pogrešku. Implicitni kursor automatski se pridružuje svakom izrazu jezika za upravljanje podacima (DML), odnosno INSERT, UPDATE i DELETE izrazima. Također, implicitni kursor koristi se za obradu SELECT INTO izraza. Prilikom dohvaćanja podataka pomoću implicitnih kursora može se podići iznimka NO_DATA_FOUND kada SQL izraz ne vraća podatke. Nadalje,implicitni pokazivači mogu podići TOO_MANY_ROWS iznimke kada SQL izraz vraća više od jednog retka.
Što je eksplicitni pokazivač?
Kao što je ranije spomenuto, eksplicitni pokazivači 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 kursora. Eksplicitni kursori također mogu uzimati parametre kao i svaka funkcija ili postupak tako da se varijable u kursoru mogu mijenjati svaki put kad se izvrši. Osim toga, eksplicitni kursori omogućuju vam dohvaćanje cijelog retka u varijablu PL / SQL zapisa. Kada koristite eksplicitni kursor, prvo ga treba deklarirati pomoću imena. Atributima kursora može se pristupiti pomoću imena datog kurzoru. Nakon prijave, prvo treba otvoriti kursor. Tada se može započeti dohvaćanje. Ako treba dohvatiti više redaka, operaciju dohvaćanja treba obaviti unutar petlje. Napokon, pokazivač treba zatvoriti.
Razlika između eksplicitnog i implicitnog kursora
Glavna razlika između implicitnog kursora i eksplicitnog kursora je u tome što eksplicitni kursor treba izričito definirati davanjem imena dok se implicitni kursori automatski kreiraju kada izdate naredbu select. Nadalje, više se redaka može dohvatiti pomoću eksplicitnih kursora, dok implicitni kursori mogu dohvatiti samo jedan redak. Također se ne pojavljuju iznimke NO_DATA_FOUND i TOO_MANY_ROWS kada se koriste eksplicitni kursori, za razliku od implicitnih kursora. U osnovi, implicitni kursori su ranjiviji na pogreške u podacima i pružaju manje programske kontrole od eksplicitnih kursora. Također, implicitni kursori se smatraju manje učinkovitima od eksplicitnih kursora.