sp_describe_cursor_tables (Transact-SQL)
Se aplica a: SQL Server
Informa acerca de los objetos o las tablas base a las que hace referencia un cursor de servidor.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_describe_cursor_tables
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Argumentos
[ @cursor_return = ] cursor_return OUTPUT
Nombre de una variable de cursor declarada para recibir la salida del cursor. @cursor_return es un cursor OUTPUT, sin ningún valor predeterminado, y no debe asociarse con ningún cursor en el momento sp_describe_cursor_tables
en que se llama. El cursor devuelto es un cursor desplazable, dinámico y de solo lectura.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Especifica si el cursor del que se informa está especificado con el nombre de un cursor local, un cursor global o una variable de cursor. @cursor_source es nvarchar(30), sin ningún valor predeterminado.
[ @cursor_identity = ] N'cursor_identity'
Cuando @cursor_source es , @cursor_identity es el nombre de un cursor creado por una DECLARE CURSOR
instrucción que tiene la palabra clave o que tiene LOCAL
como LOCAL
valor predeterminado . local
Cuando @cursor_source es , @cursor_identity es el nombre de un cursor creado por una DECLARE CURSOR
instrucción que tiene la palabra clave o que tiene GLOBAL
como GLOBAL
valor predeterminado . global
@cursor_identity también puede ser el nombre de un cursor del servidor de API abierto por una aplicación ODBC que, a continuación, denomina el cursor llamando a SQLSetCursorName
.
Cuando @cursor_source es variable
, @cursor_identity es el nombre de una variable de cursor asociada a un cursor abierto.
@cursor_identity es nvarchar(128), sin ningún valor predeterminado.
Valores de código de retorno
Ninguno.
Cursores devueltos
sp_describe_cursor_tables
encapsula su informe como un parámetro de salida de cursor de Transact-SQL. Esto permite que los lotes, los procedimientos almacenados y los desencadenadores de Transact-SQL funcionen con la salida de una fila a la vez. Esto también significa que no se puede llamar al procedimiento directamente desde las funciones de API. El parámetro de salida del cursor debe enlazarse a una variable de programa, pero las API no admiten parámetros de cursor de enlace ni variables.
En la tabla siguiente se muestra el formato del cursor devuelto por sp_describe_cursor_tables
.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
table_owner |
sysname | Id. de usuario del propietario de la tabla. |
table_name |
sysname | Nombre del objeto o tabla base. En SQL Server, los cursores de servidor siempre devuelven el objeto especificado por el usuario, no las tablas base. |
optimizer_hint |
smallint | Mapa de bits formado por una o varias de las siguientes opciones: 1 = Bloqueo de nivel de fila ( ROWLOCK )4 = Bloqueo de nivel de página ( PAGELOCK )8 = Bloqueo de tabla ( TABLOCK )16 = Bloqueo de tabla exclusivo ( TABLOCKX )32 = Bloqueo de actualización ( UPDLOCK )64 = Sin bloqueo ( NOLOCK )128 = Opción rápida de primera fila ( FASTFIRST )4096 = Semántica repetible de lectura cuando se usa con DECLARE CURSOR (HOLDLOCK )Cuando se especifican varias opciones, el sistema utiliza la más restrictiva. Sin embargo, sp_describe_cursor_tables muestra las marcas especificadas en la consulta. |
lock_type |
smallint | Tipo de bloqueo de desplazamiento requerido explícita o implícitamente para cada tabla base de este cursor. El valor puede ser una de las siguientes opciones: 0 = Ninguna 1 = Compartido 3 = Actualización |
server_name |
sysname, que acepta valores NULL | Nombre del servidor vinculado en el que reside la tabla. NULL cuando OPENQUERY se usan o OPENROWSET . |
objectid |
int | Id. de objeto de la tabla. 0 cuando OPENQUERY se usan o OPENROWSET . |
dbid |
int | Identificador de la base de datos en la que reside la tabla. 0 cuando OPENQUERY se usan o OPENROWSET . |
dbname |
sysname, que acepta valores NULL | Nombre de la base de datos en la que reside la tabla. NULL cuando OPENQUERY se usan o OPENROWSET . |
Comentarios
sp_describe_cursor_tables
describe las tablas base a las que hace referencia un cursor de servidor. Para obtener una descripción de los atributos del conjunto de resultados devuelto por el cursor, use sp_describe_cursor_columns
. Para obtener una descripción de las características globales del cursor, como la capacidad de desplazamiento y la portabilidad, use sp_describe_cursor
. Para obtener un informe de los cursores de Transact-SQL Server que están visibles en la conexión, use sp_cursor_list
.
Permisos
Debe pertenecer al rol public .
Ejemplos
En el ejemplo siguiente se abre un cursor global y se usa sp_describe_cursor_tables
para informar sobre las tablas a las que hace referencia el cursor.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_tables output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_describe_cursor_tables.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO