Atšķirība starp tiešo un netiešo kursoru

Atšķirība starp tiešo un netiešo kursoru
Atšķirība starp tiešo un netiešo kursoru

Video: Atšķirība starp tiešo un netiešo kursoru

Video: Atšķirība starp tiešo un netiešo kursoru
Video: PS3 #2: The Undead 2024, Jūlijs
Anonim

Tiešais kursors pret netiešo kursoru

Runājot par datu bāzēm, kursors ir vadības struktūra, kas ļauj pārvietoties pa ierakstiem datu bāzē. Kursors nodrošina mehānismu nosaukuma piešķiršanai SQL atlases priekšrakstam, un pēc tam to var izmantot, lai manipulētu ar informāciju šajā SQL priekšrakstā. Netieši kursori tiek automātiski izveidoti un izmantoti katru reizi, kad PL/SQL tiek izdots Select priekšraksts, ja nav skaidri definēta kursora. Skaidros kursorus, kā norāda nosaukums, izstrādātājs ir skaidri definējis. PL/SQL skaidrais kursors faktiski ir nosaukts vaicājums, kas definēts, izmantojot atslēgas vārda kursoru.

Kas ir netiešais kursors?

Netiešos kursorus Oracle automātiski izveido un izmanto katru reizi, kad tiek izdots atlases paziņojums. Ja tiek izmantots netiešs kursors, datu bāzes pārvaldības sistēma (DBMS) automātiski veiks atvēršanas, ieneses un aizvēršanas darbības. Netiešos kursori jāizmanto tikai ar SQL priekšrakstiem, kas atgriež vienu rindu. Ja SQL priekšraksts atgriež vairāk nekā vienu rindu, netiešā kursora izmantošana radīs kļūdu. Netiešais kursors tiek automātiski saistīts ar katru datu manipulācijas valodas (DML) priekšrakstu, proti, priekšrakstiem INSERT, UPDATE un DELETE. Arī SELECT INTO priekšrakstu apstrādei tiek izmantots netiešais kursors. Iegūstot datus, izmantojot netiešos kursorus, var tikt parādīts NO_DATA_FOUND izņēmums, ja SQL priekšraksts neatgriež datus. Turklāt netiešie kursori var radīt TOO_MANY_ROWS izņēmumu, ja SQL priekšraksts atgriež vairāk nekā vienu rindu.

Kas ir skaidrais kursors?

Kā minēts iepriekš, skaidrie kursori ir vaicājumi, kas definēti, izmantojot nosaukumu. Skaidru kursoru var uzskatīt par rādītāju uz ierakstu kopu, un rādītāju var pārvietot uz priekšu ierakstu kopā. Skaidri kursori nodrošina lietotājam pilnīgu kontroli pār datu atvēršanu, aizvēršanu un ienešanu. Turklāt vairākas rindas var ienest, izmantojot tiešu kursoru. Skaidri kursori var arī ņemt parametrus tāpat kā jebkura funkcija vai procedūra, lai kursora mainīgos var mainīt katru reizi, kad tas tiek izpildīts. Turklāt skaidrie kursori ļauj ienest veselu rindu PL/SQL ieraksta mainīgajā. Izmantojot skaidru kursoru, vispirms tas ir jādeklarē, izmantojot nosaukumu. Kursora atribūtiem var piekļūt, izmantojot kursoram piešķirto nosaukumu. Pēc deklarēšanas vispirms ir jāatver kursors. Pēc tam var sākt ienešanu. Ja ir jāienes vairākas rindas, ienešanas darbība jāveic cilpas ietvaros. Visbeidzot, kursors ir jāaizver.

Atšķirība starp tiešo un netiešo kursoru

Galvenā atšķirība starp netiešo kursoru un tiešo kursoru ir tāda, ka tiešais kursors ir skaidri jādefinē, norādot nosaukumu, savukārt netiešie kursori tiek automātiski izveidoti, kad izdodat atlases paziņojumu. Turklāt vairākas rindas var ienest, izmantojot tiešus kursorus, savukārt netiešie kursori var ienest tikai vienu rindu. Arī NO_DATA_FOUND un TOO_MANY_ROWS izņēmumi netiek parādīti, ja tiek izmantoti tieši kursori, pretēji netiešajiem kursoriem. Būtībā netiešie kursori ir neaizsargātāki pret datu kļūdām un nodrošina mazāku programmatisku vadību nekā skaidrie kursori. Turklāt netiešie kursori tiek uzskatīti par mazāk efektīviem nekā skaidrie kursori.

Ieteicams: