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


@@CURSOR_ROWS (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

@@CURSOR_ROWS

Возвращаемые типы

integer

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

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

Описание

-m

Курсор заполнен асинхронно. Возвращаемое значение (-m) является количеством строк, находящимся в наборе ключей.

-1

Курсор является динамическим. Так как динамический курсор отражает все изменения, количество строк для курсора постоянно изменяется. Никогда не может быть точно определено, что все отмеченные строки были получены.

0

Ни один курсор не был открыт, не было строк для последнего открытого курсора или последний открытый курсор закрыт или освобожден.

n

Курсор полностью заполнен. Возвращенное значение (n) является общим количеством строк в курсоре.

Замечания

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

Примеры

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

USE AdventureWorks2012;
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)