Razlika između eksplicitnog kursora i implicitnog kursora

Razlika između eksplicitnog kursora i implicitnog kursora
Razlika između eksplicitnog kursora i implicitnog kursora

Video: Razlika između eksplicitnog kursora i implicitnog kursora

Video: Razlika između eksplicitnog kursora i implicitnog kursora
Video: Алексеевские водопады в мае. Как проехать и что посмотреть 2024, Juli
Anonim

Explicit Cursor vs Implicit Cursor

Kada su u pitanju baze podataka, kursor je kontrolna struktura koja omogućava prelazak preko zapisa u bazi podataka. Kursor pruža mehanizam za dodjeljivanje imena SQL naredbi za odabir i onda se može koristiti za manipulaciju informacijama unutar tog SQL izraza. Implicitni kursori se automatski kreiraju i koriste svaki put kada se izda naredba Select u PL/SQL, kada ne postoji eksplicitno definiran kursor. Eksplicitni kursori, kao što ime govori, su eksplicitno definisani od strane programera. U PL/SQL-u eksplicitni kursor je zapravo imenovani upit definiran pomoću ključne riječi kursor.

Šta je implicitni kursor?

Implicitni kursori se automatski kreiraju i koriste od strane Oraclea svaki put kada se izda naredba za odabir. Ako se koristi implicitni kursor, sistem za upravljanje bazom podataka (DBMS) će automatski izvršiti operacije otvaranja, preuzimanja i zatvaranja. Implicitni kursori bi se trebali koristiti samo sa SQL izrazima koji vraćaju jedan red. Ako SQL izraz vrati više od jednog reda, korištenje implicitnog kursora će dovesti do greške. Implicitni kursor se automatski povezuje sa svakim naredbama jezika za upravljanje podacima (DML), odnosno INSERT, UPDATE i DELETE naredbama. Također, implicitni kursor se koristi za obradu naredbi SELECT INTO. Prilikom dohvaćanja podataka korištenjem implicitnih kursora NO_DATA_FOUND izuzetak može biti podignut kada SQL izraz ne vraća podatke. Nadalje, implicitni kursori mogu podići TOO_MANY_ROWS izuzetaka kada SQL izraz vrati više od jednog reda.

Šta je eksplicitni kursor?

Kao što je ranije spomenuto, eksplicitni kursori su upiti definirani korištenjem imena. Eksplicitni kursor se može smatrati pokazivačem na skup zapisa i pokazivač se može pomicati naprijed unutar skupa zapisa. Eksplicitni kursori pružaju korisniku potpunu kontrolu nad otvaranjem, zatvaranjem i dohvaćanjem podataka. Također, više redova se može dohvatiti korištenjem eksplicitnog kursora. Eksplicitni kursori također mogu uzeti parametre kao i svaka funkcija ili procedura tako da se varijable u kursoru mogu mijenjati svaki put kada se izvrši. Osim toga, eksplicitni kursori vam omogućavaju da dohvatite cijeli red u varijablu PL/SQL zapisa. Kada koristite eksplicitni kursor, prvo ga treba deklarisati pomoću imena. Atributima kursora se može pristupiti korišćenjem imena datog kursoru. Nakon deklarisanja, potrebno je prvo otvoriti kursor. Tada se dohvaćanje može započeti. Ako je potrebno dohvatiti više redova, operacija dohvaćanja se mora obaviti unutar petlje. Konačno, kursor treba zatvoriti.

Razlika između eksplicitnog kursora i implicitnog kursora

Glavna razlika između implicitnog kursora i eksplicitnog kursora je u tome što eksplicitni kursor mora biti definisan eksplicitno davanjem imena, dok se implicitni kursori automatski kreiraju kada izdate naredbu za odabir. Nadalje, više redova se može dohvatiti korištenjem eksplicitnih kursora, dok implicitni kursori mogu dohvatiti samo jedan red. Također NO_DATA_FOUND i TOO_MANY_ROWS izuzetaka se ne podižu kada se koriste eksplicitni kursori, za razliku od implicitnih kursora. U suštini, implicitni kursori su ranjiviji na greške u podacima i pružaju manje programske kontrole od eksplicitnih kursora. Takođe, implicitni kursori se smatraju manje efikasnim od eksplicitnih kursora.

Preporučuje se: