Поделиться через


@@CURSOR_ROWS (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

Синтаксис

@@CURSOR_ROWS

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

int

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

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

Замечания

@@CURSOR_ROWS возвращает отрицательное число, если последний курсор был открыт асинхронно. Драйвер набора ключей или статические курсоры открываются асинхронно, если значение 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   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

-----------
-1