Инструкция CLOSE CURSOR
Инструкция CLOSE CURSOR закрывает курсор, созданный на серверной стороне соединения с помощью инструкции DECLARE CURSOR.
CLOSE имя курсора
имя_курсора
Имя курсора, ранее созданного с помощью инструкции DECLARE CURSOR.
Инструкция CLOSE закрывает курсор и удаляет связанный с ним результирующий набор данных. Во всех платформах снимаются блокировки, связанные с курсором, хотя это и не указано в стандарте ANSI. Пример:
CLOSE author_names_cursor;
Вы также можете закрыть курсор неявно, используя инструкцию COMMIT или, для курсоров, которые были определены с предложением WITH HOLD, с помощью инструкции ROLLBACK.
В DB2 для инструкции CLOSE поддерживается дополнительное необязательное предложение WITH.
CLOSE имя_курсора [WITH RELEASE]
Где:
WITH RELEASE
Производится попытка снять все блокировки чтения, связанные с курсором. Заметьте, что DB2 не всегда может снять все блокировки, поскольку некоторые блокировки могут использоваться другими операциями.
Предложение WITH RELEASE игнорируется для курсоров уровня изоляции 3 CS или UR, если курсор определяется в методе, если курсор определяется в функции или если курсор определяется в хранимой процедуре, которая вызывается функцией или методом. Предложение WITH RELEASE может привести к таким аномалиям, как фантомное чтение или невоспроизводимое чтение, при работе на уровнях изоляции RS и RR. За подробными объяснениями уровней изоляции, в том числе фантомных чтений и невоспроизводимых чтений, обращайтесь к пункту SET TRANSACTION ISOLATION LEVEL.
Платформа PostgreSQL поддерживает стандартный синтаксис ANSI. В PostgreSQL команда CLOSE неявно выполняется для каждого открытого курсора при завершении транзакции с помощью инструкций COMMIT или ROLLBACK.
В Microsoft SQL Server поддерживается стандартный синтаксис ANSI, а также дополнительное ключевое слово GLOBAL.
CLOSE [GLOBAL] имя курсора
Где:
GLOBAL
Идентифицирует ранее определенный курсор как глобальный.
Согласно стандарту ANSI при закрытии курсора удаляется результирующий набор данных. Блокировка является физическим свойством каждой платформы и входит в ANSI SQL. Тем не менее все описываемые здесь платформы снимают блокировки, созданные курсором. Еще одной деталью физической реализации является то, что SQL Server не переводит память, занимаемую курсором, в общий пул памяти. Для завершения этого перевода вы должны подать команду DEALLOCATE ими_курсора.
В данном примере для Microsoft SQL Server производится открытие курсора и выборка набора данных обо всех служащих, чья фамилия начинается па «К».