OPEN (Transact-SQL)
Открывает серверный курсор языка Transact-SQL и заполняет его с помощью инструкции языка Transact-SQL, определенной в инструкции DECLARE CURSOR или SET cursor_variable.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Cинтаксические обозначения в Transact-SQL
Синтаксис
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Аргументы
GLOBAL
Указывает, что аргумент cursor_name ссылается на глобальный курсор.cursor_name
Имя объявленного курсора. Если существует как глобальный, так и локальный курсор с именем cursor_name, то при указании аргумента GLOBAL аргумент cursor_name ссылается на глобальный курсор, иначе аргумент cursor_name ссылается на локальный курсор.cursor_variable_name
Имя переменной курсора, которая ссылается на курсор.
Замечания
Если курсор объявлен с параметром INSENSITIVE или STATIC, инструкция OPEN создает временную таблицу для хранения результирующего набора. Инструкция OPEN завершается ошибкой в случае, если размер любой строки в результирующем наборе превышает максимальный разрешенный размер строки для таблиц SQL Server. Если курсор объявлен с параметром KEYSET, инструкция OPEN создает временную таблицу для хранения набора ключей. Временные таблицы хранятся в базе данных tempdb.
После того, как курсор открыт, используйте функцию @@CURSOR_ROWS для получения количества выбранных строк в последнем открытом курсоре.
Примечание
SQL Server не поддерживает асинхронное формирование управляемых набором ключей или статических курсоров Transact-SQL.Операции с курсорами Transact-SQL (такие как OPEN или FETCH) пакетированы, поэтому нет необходимости в асинхронном формировании курсоров Transact-SQL.SQL Server продолжает поддерживать асинхронные курсоры, управляемые набором ключей, а также статические серверные курсоры API. При этом выполнение инструкции OPEN производится с небольшой задержкой, так как при каждой операции над курсором клиент осуществляет обмен данными с сервером.
Примеры
В следующем примере открывается курсор и выбираются все его строки:
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2012.HumanResources.vEmployee
WHERE LastName like 'B%';
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;