Оператор с отворен курсор

Операторът за отваряне на курсора инициира изпълнението на основната заявка, съответстваща на описанието на курсора, посочено в израза DECLARE ... CURSOR. Когато операторът OPEN се изпълни, СУБД извършва семантична проверка на курсора, т.е. изпълнява етапи от 2 до 5 в алгоритъма за изпълнение на заявката (фиг. 12.1), така че тук СУБД връща кодове за грешки на приложението, като го информира за резултатите от основната заявка. Грешки могат да възникнат в резултат на неправилно посочване на имена на полета или имена на таблици източник или при опит за извличане на данни от таблици, до които даден потребител няма достъп.

Според стандарта СУБД връща кода за завършване на операцията в специална системна променлива SQLCODE. В приложението потребителят може да анализира тази променлива, което трябва да се направи след изпълнението на всеки SQL оператор. Ако операцията за отваряне на курсора не успее, СУБД връща отрицателна стойност SQLCODE.

Ако изпълнението на оператора за отваряне на курсора завърши успешно, наборът от данни, формиран в резултат на основната заявка, остава на разположение на потребителя до изпълнението на оператора за затваряне на курсора.

Трябва обаче да се помни, че СУБД автоматично затваря всички курсори в случай на завършване на транзакция (COMMIT) или връщане на транзакция (ROLLBACK). След като курсорът бъде затворен, той може да бъде отворен отново, но съответната заявка ще бъде изпълнена отново. Следователно е приемливо съдържанието на първия курсор да не съвпада със съдържанието му при повторно отваряне, тъй като състоянието на базата данни се е променило през това време.

Оператор за четене на следващия ред на курсора

След отваряне курсорът на текущия ред се позиционира преди първия ред на курсора. По подразбиране операторът FETCH премества указателя на текущия ред към следващия ред и задава основните променливи на стойностите на колоната, съответстващи на текущия ред.