sp_describe_cursor_tables (Transact-SQL)
Informa acerca de los objetos o las tablas base a las que hace referencia un cursor de servidor.
Sintaxis
sp_describe_cursor_tables
[ @cursor_return = ] output_cursor_variable OUTPUT
{ [ , [ @cursor_source = ] N'local'
, [@cursor_identity = ] N'local_cursor_name' ]
| [ , [ @cursor_source = ] N'global'
, [ @cursor_identity = ] N'global_cursor_name' ]
| [ , [ @cursor_source = ] N'variable'
, [ @cursor_identity = ] N'input_cursor_variable' ]
}
Argumentos
[ @cursor_return = ] output_cursor_variableOUTPUT
Es el nombre de una variable de cursor declarada que recibirá la salida del cursor. output_cursor_variable es de tipo cursor, no tiene valor predeterminado y no debe estar asociada a ningún cursor en el momento en el que se llama a sp_describe_cursor_tables. El cursor devuelto es un cursor desplazable, dinámico y de sólo lectura.[ @cursor_source = ] { N'local'| N'global' | N'variable' }
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. El parámetro es de tipo nvarchar(30).[ @cursor_identity = ] N'local_cursor_name'
Es el nombre de un cursor creado por una instrucción DECLARE CURSOR que tiene la palabra clave LOCAL u obtuvo el valor predeterminado LOCAL. local_cursor_name es de tipo nvarchar(128).[ @cursor_identity = ] N'global_cursor_name'
Es el nombre de un cursor creado por una instrucción DECLARE CURSOR que tiene una palabra clave GLOBAL u obtuvo el valor predeterminado GLOBAL. global_cursor_name también puede ser el nombre de un cursor de servidor de la API abierto por una aplicación ODBC que, a continuación, dio nombre al cursor mediante una llamada a SQLSetCursorName.global_cursor_name es de tipo nvarchar(128).[ @cursor_identity = ] N'input_cursor_variable'
Es el nombre de una variable de cursor asociada a un cursor abierto. input_cursor_variable es de tipo nvarchar(128).
Valores de código de retorno
Ninguno
Cursores devueltos
sp_describe_cursor_tables encapsula su informe como un parámetro de salida de tipo cursor de Transact-SQL. 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 una API. El parámetro de salida cursor debe estar enlazado a una variable del programa, pero las API no admiten el enlace de parámetros o variables cursor.
En la tabla siguiente se muestra el formato del cursor devuelto por sp_describe_cursor_tables.
Nombre de 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. En SQL Server 2000, los cursores de servidor devuelven las tablas base, a menos que la vista o la función se haya creado con WITH VIEW_METADATA. |
Optimizer_hints |
smallint |
Mapa de bits que incluye una o varias de las siguientes opciones: 1 = Bloqueo de fila (ROWLOCK) 4 = Bloqueo de página (PAGELOCK) 8 = Bloqueo de tabla (TABLOCK) 16 = Bloqueo exclusivo de tabla (TABLOCKX) 32 = Bloqueo de actualización (UPDLOCK) 64 = Sin bloqueo (NOLOCK) 128 = Opción de primera fila rápida (FASTFIRST) 4096 = Lectura de semántica repetible cuando se utiliza con DECLARE CURSOR (HOLDLOCK) Cuando se especifican varias opciones, el sistema utiliza la más restrictiva. Sin embargo, sp_describe_cursor_tables muestra los indicadores que se especifican 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 uno de los siguientes: 0 = Ninguno 1 = Compartido 3 = Actualización |
server_name |
sysname, nullable |
Nombre del servidor vinculado en el que reside la tabla. NULL cuando se utiliza OPENQUERY u OPENROWSET. |
Objectid |
int |
Id. de objeto de la tabla. 0 cuando se utiliza OPENQUERY u OPENROWSET. |
dbid |
int |
Id. de la base de datos en la que reside la tabla. 0 cuando se utiliza OPENQUERY u OPENROWSET. |
dbname |
sysname, nullable |
Nombre de la base de datos en la que reside la tabla. NULL cuando se utiliza OPENQUERY u OPENROWSET. |
Notas
sp_describe_cursor_tables describe las tablas base a las que hace referencia un cursor de servidor. Utilice sp_describe_cursor_columns para obtener una descripción de los atributos del conjunto de resultados devuelto por el cursor. Para obtener una descripción de las características globales del cursor, como por ejemplo sus posibilidades de desplazamiento y actualización, use sp_describe_cursor. Para obtener un informe de los cursores de servidor Transact-SQL visibles en la conexión, use sp_cursor_list.
Permisos
Debe pertenecer a la función public.
Ejemplos
En el ejemplo siguiente se abre un cursor global y se utiliza sp_describe_cursor_tables para informar acerca de las tablas a las que hace referencia el cursor.
USE AdventureWorks
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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