sp_cursor_list (Transact-SQL)

Se aplica a:SQL Server

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

Convenciones 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 el cursor, sin ningún valor predeterminado. El cursor es un cursor desplazable, dinámico y de solo lectura.

[ @cursor_scope= ] cursor_scope
Especifica el nivel de los cursores que se notificarán. cursor_scope es int, sin 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

None

Cursores devueltos

sp_cursor_list devuelve su informe como un parámetro de salida de cursor de Transact-SQL, no como un conjunto de resultados. Esto permite que los lotes, procedimientos almacenados y desencadenadores de Transact-SQL funcionen con la salida de una fila a la vez. 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 la 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 en un cursor, cursor_name devuelve el nombre de la variable de cursor. En 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
simultaneidad 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, consulte @@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, consulte @@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 Transact-SQL Server.

  • 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 notifica la misma información que sp_cursor_list, pero solo para un 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 AdventureWorks2022;  
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  

Consulte también

Procedimientos almacenados del sistema (Transact-SQL)