Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Открывает серверный курсор языка Transact-SQL и заполняет его с помощью инструкции языка Transact-SQL, определенной в инструкции DECLARE CURSOR или SET cursor_variable.
Соглашения о синтаксисе Transact-SQL
Syntax
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Arguments
GLOBAL
Указывает, что аргумент cursor_name ссылается на глобальный курсор.
cursor_name
Имя объявленного курсора. Когда имеется как глобальный, так и локальный курсор с именем cursor_name, то cursor_name относится к глобальному курсору, если задано GLOBAL% в противном случае cursor_name относится к локальному курсору.
cursor_variable_name
Имя переменной курсора, которая ссылается на курсор.
Remarks
Если курсор объявлен с параметром INSENSITIVE или STATIC, инструкция OPEN создает временную таблицу для хранения результирующего набора. Сбой OPEN, если размер любой строки в результирующем наборе превышает максимальный размер строки для таблиц SQL Server. Если курсор объявлен с параметром KEYSET, инструкция OPEN создает временную таблицу для хранения набора ключей. Временные таблицы хранятся в базе данных tempdb.
После открытия курсора используйте функцию @@CURSOR_ROWS для получения количества соответствующих строк в последнем открытом курсоре.
Note
SQL Server не поддерживает асинхронное создание управляемых набором ключей или статических курсоров Transact-SQL. Операции курсора Transact-SQL, такие как OPEN или FETCH, пакетные, поэтому не требуется асинхронное создание курсоров Transact-SQL. SQL Server продолжает поддерживать асинхронные управляемые набором ключей или статические курсоры интерфейса программирования приложений (API), где низкая задержка OPEN является проблемой из-за обхода клиента для каждой операции курсора.
Examples
В следующем примере открывается курсор и выбираются все его строки:
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2022.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;
См. также
CLOSE (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
ОБЪЯВЛЕНИЕ КУРСОРА (Transact-SQL)
FETCH (Transact-SQL)