@@CURSOR_ROWS (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Retorna o número de linhas de qualificação atualmente no último cursor aberto na conexão. Para melhorar o desempenho, o SQL Server pode popular cursores estáticos e conjuntos de chaves grandes assincronamente. @@CURSOR_ROWS pode ser chamado para determinar que o número das linhas que se qualificam para um cursor é recuperado no momento da chamada @@CURSOR_ROWS.

Convenções de sintaxe de Transact-SQL

Sintaxe

@@CURSOR_ROWS  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Tipos de retorno

inteiro

Valor Retornado

Valor retornado Descrição
-m O cursor é populado de forma assíncrona. O valor retornado (-m) é o número de linhas atualmente no conjunto de chaves.
-1 O cursor é dinâmico. Como os cursores dinâmicos refletem todas as alterações, o número de linhas que se qualificam para o cursor é alterado constantemente. O cursor não necessariamente recupera todas as linhas qualificadas.
0 Nenhum cursor foi aberto, nenhuma linha se qualificou para o último cursor aberto ou o último cursor aberto foi fechado ou desalocado.
n A tabela está totalmente populada. O valor retornado (n) é o número total de linhas no cursor.

Comentários

@@CURSOR_ROWS retorna um número negativo se o último cursor foi aberto de forma assíncrona. Os cursores controlados por conjunto de chaves ou estáticos serão abertos de forma assíncrona se o valor do limite do cursor sp_configure exceder 0 e o número de linhas no conjunto de resultados do cursor exceder o limite do cursor.

Exemplos

Este exemplo declara um cursor e usa SELECT para exibir o valor de @@CURSOR_ROWS. A configuração tem um valor de 0 antes de o cursor ser aberto e um valor de -1 para indicar que o conjunto de chaves do cursor é populado assincronamente.

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             

Estes são os conjuntos de resultados.

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

Confira também

funções de cursor (Transact-SQL)
OPEN (Transact-SQL)