CURSOR_STATUS (Transact-SQL)
Uma função escalar que permite o chamador de um procedimento armazenado para determinar se o procedimento retornou um cursor e conjunto de resultados para um determinado parâmetro ou não.
Sintaxe
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
Argumentos
'local'
Especifica uma constante que indica a fonte do cursor é um nome de cursor local.'cursor_name'
É o nome do cursor. Um nome de cursor deve obedecer às regras para identificadores.'global'
Especifica uma constante que indica que a fonte do cursor é um nome de cursor global.'variável'
Especifica uma constante que indica que a fonte do cursor é uma variável local.'cursor_variable'
É o nome do cursor variável. Uma variável de cursor deve ser definida usando o tipo de dados cursor.
Tipos de retorno
smallint
Valor de retorno |
Cursor name |
Variável de cursor |
---|---|---|
1 |
O conjunto de resultados do cursor tem, ao menos, uma fila. Para cursores insensitive e keyset, o conjunto de resultados terá ao menos uma linha. Para cursores dinâmicos, o conjunto de resultados pode ter zero, uma ou mais linhas. |
O cursor alocado a esta variável está aberto. Para cursores insensitive e keyset, o conjunto de resultados terá ao menos uma linha. Para cursores dinâmicos, o conjunto de resultados pode ter zero, uma ou mais linhas. |
0 |
O conjunto de resultados do cursor está vazio.* |
O cursor alocado a esta variável está aberto, mas o conjunto de resultados está definitivamente vazio.* |
-1 |
O cursor está fechado. |
O cursor alocado a esta variável está fechado. |
-2 |
Não aplicável. |
Pode ser: Nenhum cursor foi atribuído a esta variável OUTPUT pelo procedimento chamado anteriormente. Um cursor foi atribuído a esta variável OUTPUT pelo procedimento chamado previamente, mas ele estava em estado de fechamento na conclusão do procedimento. Então, o cursor é desalocado e não é retornado ao procedimento de chamada. Não há nenhum cursor atribuído à variável de cursor declarada. |
-3 |
Um cursor com o nome especificado não existe. |
Uma variável de cursor com o nome especificado não existe, ou se existe, nenhum cursor foi alocado a ela ainda. |
*Cursores dinâmicos nunca retornam esse resultado.
Exemplos
O exemplo a seguir usa a função CURSOR_STATUS para mostrar o status de um cursor antes e depois de ele ser aberto e fechado.
CREATE TABLE #TMP
(
ii int
)
GO
INSERT INTO #TMP(ii) VALUES(1)
INSERT INTO #TMP(ii) VALUES(2)
INSERT INTO #TMP(ii) VALUES(3)
GO
--Create a cursor.
DECLARE cur CURSOR
FOR SELECT * FROM #TMP
--Display the status of the cursor before and after opening
--closing the cursor.
SELECT CURSOR_STATUS('global','cur') AS 'After declare'
OPEN cur
SELECT CURSOR_STATUS('global','cur') AS 'After Open'
CLOSE cur
SELECT CURSOR_STATUS('global','cur') AS 'After Close'
--Remove the cursor.
DEALLOCATE cur
--Drop the table.
DROP TABLE #TMP
Aqui está o conjunto de resultados.
Depois de Declare
---------------
-1
Depois de Open
----------
1
Depois de Close
-----------
-1
Consulte também