sp_cursor_list (Transact-SQL)

Informa de los atributos de los cursores del servidor abiertos actualmente para la conexión.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT 
          , [ @cursor_scope = ] cursor_scope
[;]

Argumentos

  • [ @cursor_return = ] cursor_variable_nameOUTPUT
    Es el nombre de una variable de cursor declarada. cursor_variable_name es de tipo cursor y no tiene ningún valor predeterminado. El cursor es desplazable, dinámico y de solo lectura.

  • [ @cursor_scope = ] cursor_scope
    Especifica el nivel de cursores que se incluirán en el informe. cursor_scope es de tipo int, no tiene ningún valor predeterminado y puede ser uno de estos valores.

    Valor

    Descripción

    1

    Informa de todos los cursores locales.

    2

    Informa de todos los cursores globales.

    3

    Informa de los cursores locales y globales.

Valores de código de retorno

Ninguno

Cursores devueltos

sp_cursor_list devuelve su informe como un parámetro de salida del cursor de Transact-SQL, no como un conjunto de resultados. Esto permite a los lotes, procedimientos almacenados y desencadenadores de Transact-SQL trabajar con la salida de fila en fila. También significa que no se puede llamar al procedimiento directamente desde funciones de API de base de datos. El parámetro de salida de tipo cursor debe estar enlazado a una variable del programa, pero las API de base de datos no admiten el enlace de parámetros o variables de cursor.

Éste es el formato del cursor devuelto por sp_cursor_list. El formato del cursor es el mismo que el que devuelve sp_describe_cursor.

Nombre de columna

Tipo de datos

Descripción

reference_name

sysname

El nombre que se utiliza para hacer referencia al cursor. Si la referencia al cursor se realizó utilizando el nombre dado en una instrucción DECLARE CURSOR, el nombre de referencia es el mismo que el nombre del cursor. Si la referencia al cursor se realizó a través de una variable, el nombre de la referencia es el de la variable de cursor.

cursor_name

sysname

El nombre del cursor desde una instrucción DECLARE CURSOR. En SQL Server, si el cursor se creó estableciendo una variable de cursor como un cursor, cursor_name devuelve el nombre de la variable de cursor. En las versiones anteriores, esta columna de salida devuelve un nombre generado por el sistema.

cursor_scope

smallint

1 = LOCAL

2 = GLOBAL

status

smallint

Los mismos valores de los que informó la función del sistema CURSOR_STATUS:

1 = El cursor al que hace referencia el nombre del cursor o ?la variable está abierto. Si se trata de un cursor que no distingue, estático o de conjunto de claves, el conjunto de resultados tiene una fila, como mínimo. Si el cursor es dinámico, el conjunto de resultados tiene cero o más filas.

0 = El cursor al que hace referencia el nombre del cursor o la variable está abierto pero no tiene filas. Los cursores dinámicos nunca devuelven este valor.

-1 = El cursor al que hace referencia el nombre del cursor o la variable está cerrado.

-2 = Se aplica solo a variables de cursor. No hay ningún cursor asignado a la variable. Posiblemente, un parámetro OUTPUT asignó un cursor a la variable pero el procedimiento almacenado cerró el cursor antes de devolver resultados.

-3 = No existe un cursor o variable de cursor con el nombre especificado, o la variable del cursor no tiene todavía un cursor asignado.

model

smallint

1 = Sin distinción (o estático)

2 = Conjunto de claves

3 = Dinámico

4 = Avance rápido

concurrency

smallint

1 = Solo lectura

2 = Bloqueos de desplazamiento

3 = Optimista

scrollable

smallint

0 = Solo avance

1 = Desplazable

open_status

smallint

0 = Cerrado

1 = Abierto

cursor_rows

int

El número de filas certificadas en el conjunto de resultados. Para obtener más información, vea @@CURSOR_ROWS.

fetch_status

smallint

El estado de la última captura de este cursor. Para obtener más información, vea @@FETCH_STATUS:

0 = Captura correcta.

-1 = Error en la captura o se sobrepasaron los límites del cursor

-2 = Falta la fila solicitada.

-9 = No se registró ninguna captura en el cursor.

column_count

smallint

El número de columnas del conjunto de resultados del cursor.

row_count

smallint

El número de filas afectadas por la última operación del cursor. Para obtener más información, vea @@ROWCOUNT.

last_operation

smallint

La última operación realizada en el cursor:

0 = No se realizó ninguna operación en el cursor.

1 = OPEN

2 = FETCH

3 = INSERT

4 = UPDATE

5 = DELETE

6 = CLOSE

7 = DEALLOCATE

cursor_handle

int

Un valor único que identifica el cursor dentro del ámbito del servidor.

Comentarios

sp_cursor_list presenta una lista de los actuales cursores de servidor abiertos por la conexión y describe los atributos globales de cada cursor, como por ejemplo, las posibilidades de desplazamiento y actualización del mismo. sp_cursor_list enumera los cursores siguientes:

  • Cursores de servidor Transact-SQL.

  • Cursores de servidor de API abiertos por una aplicación ODBC que, a continuación, llamó a SQLSetCursorName para denominar al cursor.

Utilice sp_describe_cursor_columns para obtener una descripción de los atributos del conjunto de resultados devuelto por el cursor. Utilice sp_describe_cursor_tables para obtener un informe de las tablas base a las que hace referencia el cursor. sp_describe_cursor especifica la misma información que sp_cursor_list, pero solo para el cursor especificado.

Permisos

De forma predeterminada, los permisos de ejecución corresponden al rol public.

Ejemplos

En el ejemplo siguiente se abre un cursor global y se utiliza sp_cursor_list para obtener un informe de los atributos del cursor.

USE AdventureWorks2008R2;
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
      @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
   FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO