Partilhar via


@@CURSOR_ROWS (Transact-SQL)

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

Essa função retorna o número de linhas qualificadas 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 são recuperadas no momento da @@CURSOR_ROWS chamada.

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

int

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 recupera necessariamente todas as linhas qualificadas.
0 Nenhum cursor está aberto, nenhuma linha qualificada para o último cursor aberto ou o cursor da última abertura é fechado ou deslocalizado.
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 estáticos ou de driver de conjunto de teclas são abertos de forma assíncrona se o valor sp_configure do limite do cursor exceder 0o , 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   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

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