Изричен курсор срещу неявен курсор
Когато става дума за бази данни, курсорът е контролна структура, която позволява преминаване през записите в база данни. Курсорът предоставя механизъм за присвояване на име на оператор за избор на SQL и след това може да се използва за манипулиране на информацията в рамките на този SQL оператор. Неявните им курсори се създават автоматично и се използват всеки път, когато се издаде оператор Select в PL / SQL, когато няма изрично дефиниран курсор. Изричните курсори, както подсказва името, се определят изрично от разработчика. В PL / SQL явен курсор всъщност е име на заявка, дефинирано с помощта на курсора на ключовата дума.
Какво е имплицитен курсор?
Неявните им курсори се създават автоматично и се използват от Oracle всеки път, когато се издава оператор за избор. Ако се използва неявен курсор, системата за управление на бази данни (СУБД) ще извърши операциите за отваряне, извличане и затваряне автоматично. Имплицитните курсори трябва да се използват само със SQL изрази, които връщат един ред. Ако SQL операторът върне повече от един ред, използването на неявен курсор ще въведе грешка. Подразбиращият се курсор автоматично се свързва с всеки оператор на DML (Manipulation Language), а именно INSERT, UPDATE и DELETE. Също така, неявен курсор се използва за обработка на оператори SELECT INTO. При извличане на данни с използване на неявни курсори NO_DATA_FOUND изключение може да бъде повишено, когато SQL операторът не върне никакви данни. Освен това неявните курсори могат да повишат TOO_MANY_ROWS изключения, когато SQL операторът върне повече от един ред.
Какво е явен курсор?
Както бе споменато по-горе, изричните курсори са заявки, дефинирани с помощта на име. Изричният курсор може да се разглежда като указател към набор от записи и показалеца може да бъде преместен напред в рамките на набора от записи. Явните курсори осигуряват на потребителя пълния контрол върху отварянето, затварянето и извличането на данни. Също така могат да се извлекат няколко реда с помощта на явен курсор. Изричните курсори също могат да приемат параметри, както всяка функция или процедура, така че променливите в курсора да могат да се променят всеки път, когато се изпълнява. В допълнение, изричните курсори ви позволяват да донесете цял ред в променлива на PL / SQL запис. Когато използвате явен курсор, първо трябва да бъде деклариран с помощта на име. Атрибутите на курсора могат да бъдат достъпни с помощта на името, дадено на курсора. След декларирането първо трябва да се отвори курсорът. Тогава извличането може да започне. Ако трябва да се извлекат няколко реда, операцията за извличане трябва да се извърши вътре в цикъл. Накрая курсорът трябва да бъде затворен.
Разлика между експлицитния курсор и имплицитния курсор
Основната разлика между имплицитния курсор и явния курсор е, че трябва да се дефинира изрично курсорът чрез предоставяне на име, докато имплицитните курсори се създават автоматично, когато издавате оператор за избор. Освен това няколко реда могат да бъдат извлечени с помощта на явни курсори, докато неявни курсори могат да извлекат само един ред. Също така изключенията NO_DATA_FOUND и TOO_MANY_ROWS не се повдигат при използване на явни курсори, за разлика от неявни курсори. По същество имплицитните курсори са по-уязвими към грешките в данните и осигуряват по-малко програмен контрол от явните курсори. Също така, неявните курсори се считат за по-малко ефективни от явните курсори.