Compartir a través de


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' }
     )

Argumentos

'Local'

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

"global"

Especifica una constante que indica que el origen del cursor es un 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. 1 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 denominado anteriormente no asignó un cursor a esta OUTPUT variable.

El procedimiento asignado anteriormente asignó un cursor a esta OUTPUT variable, pero el cursor estaba en un estado cerrado cuando se completó 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 un cursor con el nombre especificado. Una variable de cursor con el nombre especificado no existe o, si existe, aún no se le asigna ningún cursor.

1 Los cursores dinámicos nunca devuelven 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
-- and 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;

Este es el conjunto de resultados.

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1