sp_describe_cursor_columns (Transact-SQL)
Si applica a: SQL Server
Crea un report degli attributi associati alle colonne del set di risultati in un cursore del server.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_describe_cursor_columns
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Argomenti
[ @cursor_return = ] cursor_return OUTPUT
Nome di una variabile di cursore dichiarata per ricevere l'output del cursore. @cursor_return è un parametro OUTPUT di tipo int, senza impostazione predefinita e non deve essere associato ad alcun cursore al momento sp_describe_cursor_columns
della chiamata. Il cursore restituito è di tipo scorrevole, dinamico e di sola lettura.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Specifica se viene specificato il cursore segnalato in utilizzando il nome di un cursore locale , un cursore globale o una variabile di cursore. @cursor_source è nvarchar(30), senza impostazione predefinita.
[ @cursor_identity = ] N'cursor_identity'
Nome di un cursore creato da un'istruzione DECLARE CURSOR
. @cursor_identity è nvarchar(128), senza impostazione predefinita.
Se il cursore ha la
LOCAL
parola chiave o è impostato suLOCAL
, @cursor_identity èlocal
.Se il cursore ha la
GLOBAL
parola chiave o è impostato suGLOBAL
, @cursor_identity èglobal
. @cursor_identity può anche essere il nome di un cursore del server API aperto da un'applicazione ODBC e quindi denominato chiamandoSQLSetCursorName
.In caso contrario, @cursor_identity è il nome di una variabile di cursore associata a un cursore aperto.
Valori del codice restituito
Nessuno.
Cursori restituiti
sp_describe_cursor_columns
incapsula il report come parametro di output Transact-SQL cursor
. In questo modo, i batch Transact-SQL, le stored procedure e i trigger possono funzionare con l'output di una riga alla volta. Ciò significa anche che la procedura non può essere chiamata direttamente dalle funzioni API del database. Il cursor
parametro di output deve essere associato a una variabile di programma, ma le API di database non supportano parametri o variabili di associazione cursor
.
Nella tabella seguente viene illustrato il formato del cursore restituito tramite sp_describe_cursor_columns
.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
column_name |
sysname | Nome assegnato alla colonna del set di risultati. La colonna è NULL se la colonna è stata specificata senza una clausola associata AS .Ammette valori Null. |
ordinal_position |
int | Posizione relativa della colonna a partire dalla prima colonna a sinistra del set di risultati. La prima colonna si trova nella posizione 0 . |
column_characteristics_flags |
int | Maschera di bit che indica le informazioni archiviate in DBCOLUMNFLAGS OLE DB. Può essere una o una combinazione dei valori seguenti:1 = Segnalibro2 = Lunghezza fissa4 = Nullable8 = Controllo delle versioni delle righe16 = Colonna aggiornabile (impostata per le colonne proiettate di un cursore che non FOR UPDATE è una clausola e, se è presente una colonna di questo tipo, può essere una sola colonna per cursore).Quando i valori bit vengono combinati, vengono applicate le caratteristiche dei valori bit combinati. Ad esempio, se il valore di bit è 6 , la colonna è a lunghezza fissa (2 ), nullable (4 ). |
column_size |
int | Dimensioni massime consentite per un valore della colonna. |
data_type_sql |
smallint | Numero che indica il tipo di dati di SQL Server della colonna. |
column_precision |
tinyint | Precisione massima della colonna in base al bPrecision valore in OLE DB. |
column_scale |
tinyint | Numero di cifre a destra del separatore decimale per i tipi di dati numerici o decimali in base al bScale valore in OLE DB. |
order_position |
int | Se la colonna partecipa all'ordinamento del set di risultati, posizione della colonna nella chiave di ordinamento relativa alla prima colonna a sinistra. |
order_direction |
varchar(1) | A = La colonna è nella chiave dell'ordine e l'ordinamento è crescente.D = La colonna è nella chiave di ordine e l'ordinamento è decrescente.NULL = La colonna non partecipa all'ordinamento.Ammette valori Null. |
hidden_column |
smallint | 0 = questa colonna viene visualizzata nell'elenco di selezione.1 = Riservato per uso futuro. |
columnid |
int | ID della colonna di base. Se la colonna del set di risultati è stata compilata da un'espressione, columnid è -1 . |
objectid |
int | ID dell'oggetto o della tabella di base che include la colonna. Se la colonna del set di risultati è stata compilata da un'espressione, objectid è -1 . |
dbid |
int | ID del database contenente la tabella di base che include la colonna. Se la colonna del set di risultati è stata compilata da un'espressione, dbid è -1 . |
dbname |
sysname | Nome del database contenente la tabella di base che include la colonna. Se la colonna del set di risultati è stata compilata da un'espressione, dbname è NULL .Ammette valori Null. |
Osservazioni:
sp_describe_cursor_columns
descrive gli attributi delle colonne nel set di risultati di un cursore del server, ad esempio il nome e il tipo di dati di ogni cursore. Utilizzare sp_describe_cursor
per una descrizione degli attributi globali del cursore del server. Utilizzare sp_describe_cursor_tables
per un report delle tabelle di base a cui fa riferimento il cursore. Per ottenere un report dei cursori transact-SQL server visibili nella connessione, usare sp_cursor_list
.
Autorizzazioni
È richiesta l'appartenenza al ruolo public .
Esempi
Nell'esempio seguente viene aperto un cursore globale e viene utilizzata la stored procedure sp_describe_cursor_columns
per creare un report delle colonne utilizzate nel cursore.
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