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