Precīzs kursors pret netiešu kursoru
Runājot par datu bāzēm, kursors ir vadības struktūra, kas ļauj šķērsot ierakstus datu bāzē. Kursors nodrošina mehānismu, kā piešķirt nosaukumu SQL izvēles paziņojumam, un pēc tam to var izmantot, lai manipulētu ar informāciju šajā SQL paziņojumā. Netiešie kursori tiek automātiski izveidoti un izmantoti katru reizi, kad atlasīšanas paziņojums tiek izdots PL / SQL, kad nav precīzi definēta kursora. Nepārprotamus kursorus, kā norāda nosaukums, skaidri definē izstrādātājs. PL / SQL tiešs kursors faktiski ir nosaukts vaicājums, kas definēts, izmantojot atslēgas vārda kursoru.
Kas ir netiešais kursors?
Netiešos kursorus automātiski izveido un izmanto Oracle katru reizi, kad tiek izsniegts atlasītais paziņojums. Ja tiek izmantots netiešs kursors, datu bāzes pārvaldības sistēma (DBMS) automātiski veiks atvēršanas, atgūšanas un aizvēršanas operācijas. Netiešie kursori jāizmanto tikai ar SQL paziņojumiem, kas atgriež vienu rindu. Ja SQL paziņojums atgriež vairāk nekā vienu rindu, netieša kursora izmantošana radīs kļūdu. Netiešs kursors tiek automātiski saistīts ar visiem datu manipulācijas valodas (DML) paziņojumiem, proti, INSERT, UPDATE un DELETE paziņojumiem. Arī netiešu kursoru izmanto, lai apstrādātu paziņojumus SELECT INTO. Ielādējot datus, izmantojot netiešos kursorus, var tikt paaugstināts NO_DATA_FOUND izņēmums, kad SQL paziņojums neatgriež datus. Turklāt netiešie kursori var radīt TOO_MANY_ROWS izņēmumus, ja SQL paziņojums atgriež vairāk nekā vienu rindu.
Kas ir nepārprotams kursors?
Kā minēts iepriekš, skaidri izteikti kursori ir vaicājumi, kas definēti, izmantojot vārdu. Nepārprotamu kursoru var uzskatīt par rādītāju ierakstu kopai, un rādītāju var pārvietot uz priekšu ierakstu komplekta ietvaros. Nepārprotami kursori nodrošina lietotājam pilnīgu datu atvēršanas, aizvēršanas un atgūšanas kontroli. Arī vairākas rindas var ienest, izmantojot skaidru kursoru. Nepārprotami kursori var arī ņemt parametrus tāpat kā jebkura funkcija vai procedūra, lai mainīgos kursorā varētu mainīt katru reizi, kad tas tiek izpildīts. Turklāt skaidri izteikti kursori ļauj ienest veselu rindu PL / SQL ierakstu mainīgajā. Lietojot precīzu kursoru, vispirms tas jādeklarē, izmantojot vārdu. Kursora atribūtiem var piekļūt, izmantojot kursoram piešķirto vārdu. Pēc deklarēšanas vispirms jāatver kursors. Tad var sākt ienest. Ja ir jāieliek vairākas rindas, ienešana jāveic cilpas iekšpusē. Visbeidzot, kursors ir jāaizver.
Atšķirība starp tiešo un netiešo kursoru
Galvenā atšķirība starp netiešo un tiešo kursoru ir tāda, ka precīzs kursors ir precīzi jādefinē, sniedzot vārdu, kamēr netiešie kursori tiek automātiski izveidoti, izdodot atlasītu paziņojumu. Turklāt vairākas rindas var atnest, izmantojot precīzus kursorus, savukārt netiešie kursori var ienest tikai vienu rindu. Arī NO_DATA_FOUND un TOO_MANY_ROWS izņēmumi netiek izvirzīti, izmantojot precīzus kursorus, nevis netiešos kursorus. Būtībā netiešie kursori ir neaizsargātāki pret datu kļūdām un nodrošina mazāk programmētu kontroli nekā skaidri izteikti kursori. Arī netiešie kursori tiek uzskatīti par mazāk efektīviem nekā tiešie kursori.