CURSOR_STATUS (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Para un parámetro en concreto, CURSOR_STATUS muestra si una declaración de cursor ha devuelto un cursor y un conjunto de resultados.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CURSOR_STATUS   
     (  
          { 'local' , 'cursor_name' }   
          | { 'global' , 'cursor_name' }   
          | { 'variable' , 'cursor_variable' }   
     )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

'local'
Especifica una constante que indica que el origen del cursor es un nombre de cursor local.

'cursor_name'
El nombre del cursor. Un nombre de cursor debe ajustarse a las reglas de los identificadores de base de datos.

'global'
Especifica una constante que indica que el origen del cursor es un nombre de cursor global.

'variable'
Especifica una constante que indica que el origen del cursor es una variable local.

'cursor_variable'
El nombre de la variable de cursor. Una variable de cursor debe definirse mediante el tipo de datos cursor.

Tipos de valores devueltos

smallint

Valor devuelto Nombre de cursor Variable de cursor
1 El conjunto de resultados del cursor tiene al menos una fila.

Para los cursores INSENSITIVE y de conjunto de claves, el conjunto de resultados tiene al menos una fila.

Para los cursores dinámicos, el conjunto de resultados puede tener cero, una o más filas.
El cursor asignado a esta variable está abierto.

Para los cursores INSENSITIVE y de conjunto de claves, el conjunto de resultados tiene al menos una fila.

Para los cursores dinámicos, el conjunto de resultados puede tener cero, una o más filas.
0 El conjunto de resultados del cursor está vacío.* El cursor asignado a esta variable está abierto, pero el conjunto de resultados está definitivamente vacío.*
-1 El cursor está cerrado. El cursor asignado a esta variable está cerrado.
-2 No aplicable. Tiene una de estas posibilidades:

El procedimiento llamado anteriormente no asignó ningún cursor a esta variable OUTPUT.

El procedimiento asignado anteriormente asignó un cursor a esta variable OUTPUT, pero el cursor se encontraba en un estado cerrado al concluir el procedimiento. Por tanto, se cancela la asignación del cursor y no se devuelve al procedimiento que hace la llamada.

No se asigna ningún cursor a la variable declarada de cursor.
-3 No existe ningún cursor con el nombre indicado. No existe ninguna variable de cursor con el nombre indicado o, si existe, aún no tiene ningún cursor asignado.

*Los cursores dinámicos no devuelven nunca este resultado.

Ejemplos

Este ejemplo usa la función CURSOR_STATUS para mostrar el estado de un cursor después de su declaración, una vez abierto y una vez cerrado.

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  
  

El conjunto de resultados es el siguiente:

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

Consulte también

Funciones del cursor (Transact-SQL)
Tipos de datos (Transact-SQL)