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_return OUTPUT
, [ @cursor_scope = ] cursor_scope
[ ; ]
Argumentos
[ @cursor_return = ] cursor_return OUTPUT
Nombre de una variable de cursor declarada. @cursor_return es un parámetro OUTPUT de tipo CURSOR. 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
Ninguno.
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, los procedimientos almacenados y los 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 las funciones de API de base de datos. El parámetro de salida del cursor debe enlazarse a una variable de programa, pero las API de base de datos no admiten parámetros de cursor de enlace ni variables.
Este es el formato del cursor devuelto por sp_cursor_list
. El formato del cursor es el mismo que el formato devuelto por 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ó a través del nombre proporcionado en una DECLARE CURSOR instrucción , 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 | Nombre del cursor de una DECLARE CURSOR instrucción. 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 notificados por la función del CURSOR_STATUS sistema:1 = El cursor al que hace referencia el nombre del cursor o la variable está abierto. Si el cursor no distingue, estática o conjunto de claves, es al menos una fila. 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 se cierra.-2 = Solo se aplica a las variables de cursor. No hay ningún cursor asignado a la variable. Posiblemente, un OUTPUT parámetro asignó un cursor a la variable, pero el procedimiento almacenado cerró el cursor antes de devolverlo.-3 = No existe una variable de cursor o cursor con el nombre especificado o la variable de cursor no tiene asignado un cursor. |
model |
smallint | 1 = No distingue (o estática)2 = Conjunto de claves3 = Dinámico4 = Inserción rápida |
concurrency |
smallint | 1 = Solo lectura2 = Bloqueos de desplazamiento3 = Optimista |
scrollable |
smallint | 0 = Solo reenvío1 = Desplazable |
open_status |
smallint | 0 = Cerrado1 = Abrir |
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, consulte @@FETCH_STATUS:0 = Captura correcta.-1 = Error de captura o está más allá de los límites del cursor.-2 = Falta la fila solicitada.-9 = No se ha producido 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 realizaron operaciones 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
genera una lista de los cursores de servidor actuales abiertos por la conexión y describe los atributos globales para cada cursor, como la capacidad de desplazamiento y la portabilidad del cursor. Los cursores enumerados por sp_cursor_list
incluyen:
Cursores de Transact-SQL Server.
Cursores del servidor de API abiertos por una aplicación ODBC a la que se llama
SQLSetCursorName
para asignar un nombre al cursor.
Use sp_describe_cursor_columns
para obtener una descripción de los atributos del conjunto de resultados devuelto por el cursor. Use sp_describe_cursor_tables
para un informe de las tablas base a las que hace referencia el cursor. sp_describe_cursor
informa de 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