Partilhar via


@@CURSOR_ROWS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Esta função devolve o número de linhas qualificadas atualmente no último cursor aberto na ligação. Para melhorar o desempenho, o SQL Server pode preencher de forma assíncrona um conjunto grande de chaves e cursores estáticos. @@CURSOR_ROWS pode ser chamado para determinar que o número das linhas que qualificam para um cursor é recuperado no momento da @@CURSOR_ROWS chamada.

Transact-SQL convenções de sintaxe

Sintaxe

@@CURSOR_ROWS

Tipos de devolução

int

Valor de retorno

Valor de retorno Description
-m O cursor preenche de forma assíncrona. O valor devolvido (-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 muda 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 último cursor aberto está fechado ou desalocado.
n O cursor está totalmente preenchido. O valor devolvido (n) é o número total de linhas no cursor.

Observações

@@CURSOR_ROWS devolve um número negativo se o último cursor abriu assíncrono. Os cursores keyset-driver ou estáticos abrem-se assíncronos se o valor do sp_configure limiar do cursor exceder 0, e o número de linhas no conjunto de resultados do cursor exceder o limiar do cursor.

Examples

Este exemplo declara primeiro um cursor, e depois usa SELECT para mostrar o valor de @@CURSOR_ROWS. A definição tem um valor de 0 antes do cursor abrir e depois tem um valor de -1, para indicar que o conjunto de teclas do cursor se preenche assíncronamente.

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

Aqui estão os conjuntos de resultados.

-----------
0

LastName   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

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