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 su LOCAL, @cursor_identity è local.

  • Se il cursore ha la GLOBAL parola chiave o è impostato su GLOBAL, @cursor_identity è global. @cursor_identity può anche essere il nome di un cursore del server API aperto da un'applicazione ODBC e quindi denominato chiamando SQLSetCursorName.

  • 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 = Segnalibro
2 = Lunghezza fissa
4 = Nullable
8 = Controllo delle versioni delle righe
16 = 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