Nepārprotams kursors pret netiešo kursoru
Runājot par datu bāzēm, kursors ir vadības struktūra, kas ļauj šķērsot datu bāzes ierakstus. Kursors nodrošina mehānismu, kā piešķirt vārdu SQL select priekšrakstam, un pēc tam to var izmantot, lai manipulētu ar informāciju šajā SQL priekšrakstā. Netiešie kursori tiek automātiski izveidoti un izmantoti katru reizi, kad PL / SQL tiek izdots Select priekšraksts, ja nav skaidri definēta kursora. Izprotējs skaidri definē kursorus, kā norāda nosaukums. PL / SQL izteikti 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 atlasīts paziņojums. Ja tiek izmantots netiešais kursors, datu bāzes pārvaldības sistēma (DBVS) automātiski veiks atvēršanas, ielādes un aizvēršanas darbības. Netiešie 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šs kursors tiek automātiski saistīts ar katru datu apstrādes valodas (DML) priekšrakstu, proti, INSERT, UPDATE un DELETE. Arī SELECT INTO paziņojumu apstrādei tiek izmantots netiešs kursors. Ienesot datus, izmantojot netiešos kursorus, NO_DATA_FOUND izņēmumu var radīt, kad SQL priekšraksts neatgriež datus. Turklātnetiešie kursori var palielināt TOO_MANY_ROWS izņēmumus, ja SQL priekšraksts atgriež vairāk nekā vienu rindu.
Kas ir nepārprotams kursors?
Kā minēts iepriekš, nepārprotami kursori ir vaicājumi, kas definēti, izmantojot vārdu. Skaidru kursoru var uzskatīt par rādītāju ierakstu kopai, un rādītāju var virzīt uz priekšu ierakstu kopas ietvaros. Nepārprotami kursori nodrošina lietotājam pilnīgu kontroli pār datu atvēršanu, aizvēršanu un ienešanu. Arī vairākas rindas var iegūt, izmantojot skaidru kursoru. Nepārprotami kursori var ņemt parametrus tāpat kā jebkuru funkciju vai procedūru, lai mainītos kursorā varētu mainīt katru reizi, kad tas tiek izpildīts. Turklāt nepārprotami kursori ļauj ielādēt visu rindu PL / SQL ieraksta mainīgajā. Lietojot skaidru kursoru, vispirms tas jādeklarē, izmantojot vārdu. Kursora atribūtiem var piekļūt, izmantojot kursoram piešķirto nosaukumu. Pēc deklarēšanas vispirms ir jāatver kursors. Tad var sākt atnest. Ja ir jāielādē vairākas rindas, ienesšanas darbība jāveic cilpa iekšpusē. Visbeidzot, kursors ir jāaizver.
Atšķirība starp nepārprotamu kursoru un netiešo kursoru
Galvenā atšķirība starp netiešo kursoru un nepārprotamo kursoru ir tāda, ka nepārprotams kursors ir skaidri jādefinē, norādot vārdu, savukārt netiešie kursori tiek automātiski izveidoti, kad izsniedzat atlasītu paziņojumu. Turklāt vairākas rindas var ielādēt, izmantojot izteiktus kursorus, savukārt netiešos kursorus var iegūt tikai vienā rindā. Arī NO_DATA_FOUND un TOO_MANY_ROWS izņēmumi netiek izmantoti, ja tiek izmantoti izteikti kursori, pretstatā netiešajiem kursoriem. Būtībā netiešie kursori ir neaizsargātāki pret datu kļūdām un nodrošina mazāk programmatisku kontroli nekā izteikti kursori. Arī netiešie kursori tiek uzskatīti par mazāk efektīviem nekā izteikti kursori.