sp_describe_cursor_columns (Transact-SQL)
Se aplica a: SQL Server
Informa acerca de los atributos de las columnas en el conjunto de resultados de un cursor de servidor.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_describe_cursor_columns
[ @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 parámetro OUTPUT de tipo int, sin ningún valor predeterminado y no debe asociarse con ningún cursor en el momento sp_describe_cursor_columns
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 se especifica el cursor en el que se notifica, mediante 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'
Nombre de un cursor creado por una DECLARE CURSOR
instrucción . @cursor_identity es nvarchar(128), sin ningún valor predeterminado.
Si el cursor tiene la palabra clave o tiene como
LOCAL
valor predeterminadoLOCAL
, @cursor_identity eslocal
.Si el cursor tiene la palabra clave o tiene como
GLOBAL
valor predeterminadoGLOBAL
, @cursor_identity esglobal
. @cursor_identity también puede ser el nombre de un cursor del servidor de API abierto por una aplicación ODBC y, a continuación, llamar aSQLSetCursorName
.De lo contrario, @cursor_identity es el nombre de una variable de cursor asociada a un cursor abierto.
Valores de código de retorno
Ninguno.
Cursores devueltos
sp_describe_cursor_columns
encapsula su informe como un parámetro de salida de Transact-SQL cursor
. 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 de base de datos. El cursor
parámetro de salida debe enlazarse a una variable de programa, pero las API de base de datos no admiten parámetros de enlace cursor
ni variables.
En la tabla siguiente se muestra el formato del cursor devuelto mediante sp_describe_cursor_columns
.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
column_name |
sysname | Nombre asignado a la columna del conjunto de resultados. La columna es NULL si la columna se especificó sin una cláusula complementaria AS .Acepta valores NULL. |
ordinal_position |
int | Posición relativa de la columna desde la primera columna de la izquierda en el conjunto de resultados. La primera columna está en la posición 0 . |
column_characteristics_flags |
int | Máscara de bits que indica la información almacenada en DBCOLUMNFLAGS OLE DB. Puede ser una o una combinación de los siguientes valores:1 = Marcador2 = Longitud fija4 = Admite valores NULL8 = Control de versiones de fila16 = Columna actualizable (establecida para columnas proyectadas de un cursor que no es ninguna FOR UPDATE cláusula y, si hay una columna de este tipo, solo puede ser una por cursor).Cuando se combinan valores de bit, se aplican las características de los valores de bit combinados. Por ejemplo, si el valor de bit es 6 , la columna es una columna de longitud fija (2 ), que acepta valores NULL (4 ). |
column_size |
int | Tamaño máximo posible para un valor de esta columna. |
data_type_sql |
smallint | Número que indica el tipo de datos de SQL Server de la columna. |
column_precision |
tinyint | Precisión máxima de la columna según el bPrecision valor en OLE DB. |
column_scale |
tinyint | Número de dígitos a la derecha del separador decimal para los tipos de datos numéricos o decimales según el bScale valor de OLE DB. |
order_position |
int | Si la columna participa en la ordenación del conjunto de resultados, es la posición de la columna en la clave de orden relativa a la columna situada en el extremo izquierdo. |
order_direction |
varchar(1) | A = La columna está en la clave de orden y la ordenación es ascendente.D = La columna está en la clave de orden y la ordenación es descendente.NULL = La columna no participa en la ordenación.Acepta valores NULL. |
hidden_column |
smallint | 0 = esta columna aparece en la lista de selección.1 = Reservado para uso futuro. |
columnid |
int | Id. de columna para la columna base. Si la columna del conjunto de resultados se creó a partir de una expresión, columnid es -1 . |
objectid |
int | Id. de objeto del objeto o la tabla base que proporciona la columna. Si la columna del conjunto de resultados se creó a partir de una expresión, objectid es -1 . |
dbid |
int | Id. de la base de datos que contiene la tabla base que proporciona la columna. Si la columna del conjunto de resultados se creó a partir de una expresión, dbid es -1 . |
dbname |
sysname | Nombre de la base de datos que contiene la tabla base que proporciona la columna. Si la columna del conjunto de resultados se creó a partir de una expresión, dbname es NULL .Acepta valores NULL. |
Comentarios
sp_describe_cursor_columns
describe los atributos de las columnas del conjunto de resultados de un cursor de servidor, como el nombre y el tipo de datos de cada cursor. Use sp_describe_cursor
para obtener una descripción de los atributos globales del cursor del servidor. Use sp_describe_cursor_tables
para un informe de las tablas base a las que hace referencia el cursor. Para obtener un informe de los cursores de Transact-SQL Server 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 utiliza sp_describe_cursor_columns
para obtener un informe de las columnas utilizadas en el cursor.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person;
GO
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO