@@CURSOR_ROWS (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Возвращает число выбранных строк, имеющихся в последнем открытом курсоре в данном соединении. Чтобы повысить производительность, SQL Server может заполнять большой набор ключей и статические курсоры асинхронно. Функцию @@CURSOR_ROWS можно вызвать для определения того, получено ли количество строк, определенных для курсора, во время вызова @@CURSOR_ROWS.

Соглашения о синтаксисе Transact-SQL

Синтаксис

@@CURSOR_ROWS  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Типы возвращаемых данных

integer

Возвращаемое значение

Возвращаемое значение Description
-m Курсор заполняется асинхронно. Возвращаемое значение (–m) является текущим числом строк в наборе ключей.
-1 Курсор является динамическим. Так как динамический курсор отражает все изменения, количество строк для курсора постоянно изменяется. Курсор не обязательно извлекает все определенные строки.
0 Ни один курсор не был открыт, не было строк для последнего открытого курсора или последний открытый курсор закрыт или освобожден.
n Курсор полностью заполнен. Возвращенное значение (n) является общим количеством строк в курсоре.

Замечания

@@CURSOR_ROWS возвращает отрицательное число, если последний курсор был открыт асинхронно. Управляемые набором ключей или статические курсоры открываются асинхронно, если значение параметра cursor threshold процедуры sp_configure больше 0, а количество строк в результирующем наборе курсора больше, чем пороговое значение курсора.

Примеры

В приведенном ниже примере объявляется курсор и выполняется инструкция SELECT для вывода на экран значения @@CURSOR_ROWS. Параметр имеет значение 0 перед открытием курсора, а затем принимает значение -1, которое указывает на то, что набор ключей курсора заполняется асинхронно.

USE AdventureWorks2022;  
GO  
SELECT @@CURSOR_ROWS;  
DECLARE Name_Cursor CURSOR FOR  
SELECT LastName ,@@CURSOR_ROWS FROM Person.Person;  
OPEN Name_Cursor;  
FETCH NEXT FROM Name_Cursor;  
SELECT @@CURSOR_ROWS;  
CLOSE Name_Cursor;  
DEALLOCATE Name_Cursor;  
GO             

Ниже приведены результирующие наборы.

-----------
0  
LastName
---------------
Sanchez
-----------
-1

См. также

Функции курсора (Transact-SQL)
OPEN (Transact-SQL)