@@CURSOR_ROWS (Transact-SQL)
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 em que @@CURSOR_ROWS é chamado.
Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
@@CURSOR_ROWS
Tipos de retorno
integer
Valor de retorno
Valor de retorno |
Descrição |
---|---|
-m |
A tabela de cursor é populada 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 são alterados constantemente. Nunca se pode afirmar de forma definitiva que todas as linhas qualificadas foram recuperadas. |
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
O número retornado por @@CURSOR_ROWS será negativo se o último cursor tiver sido aberto assincronamente. Cursores controlados por conjunto de chaves ou estáticos serão abertos assincronamente se o valor de sp_configure cursor threshold for maior que 0 e o número de linhas no conjunto de resultados do cursor for maior que o limite do cursor.
Exemplos
O exemplo seguinte 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 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
Estes são os conjuntos de resultados.
-----------
0
LastName
---------------
Sanchez
-----------
-1