sp_describe_cursor_columns (Transact-SQL)

Crea un report degli attributi associati alle colonne del set di risultati in un cursore del server.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_describe_cursor_columns 
   [ @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' ] 
   }

Argomenti

  • [ @cursor_return = ] output_cursor_variable OUTPUT
    Nome di una variabile di cursore dichiarata per la ricezione dell'output del cursore. output_cursor_variable è cursor e non prevede alcun valore predefinito. Inoltre non deve essere associata ad alcun cursore quando si chiama la stored procedure sp_describe_cursor_columns. Il cursore restituito è di tipo scorrevole, dinamico e di sola lettura.

  • [ @cursor_source = ] { N'local' | N'global' | N'variable' }
    Specifica se il cursore di cui viene generato il report viene specificato utilizzando il nome di un cursore locale, di un cursore globale o di una variabile di cursore. Il parametro è di tipo nvarchar(30).

  • [ @cursor_identity = ] N'local_cursor_name'
    Nome di un cursore creato da un'istruzione DECLARE CURSOR con la parola chiave LOCAL o che è stato automaticamente creato come LOCAL. local_cursor_name è di tipo nvarchar(128).

  • [ @cursor_identity = ] N'global_cursor_name'
    Nome di un cursore creato da un'istruzione DECLARE CURSOR con la parola chiave GLOBAL o che è stato automaticamente creato come GLOBAL. global_cursor_name è di tipo nvarchar(128).

    global_cursor_name può inoltre essere il nome di un cursore API del server aperto da un'applicazione ODBC e quindi denominato tramite una chiamata alla funzione SQLSetCursorName.

  • [ @cursor_identity = ] N'input_cursor_variable'
    Nome di una variabile di cursore associata a un cursore aperto. input_cursor_variable è di tipo nvarchar(128).

Valori restituiti

Nessuno

Cursori restituiti

sp_describe_cursor_columns incapsula i propri report come un parametro di output Transact-SQLcursor. In questo modo i batch, le stored procedure e i trigger Transact-SQL possono elaborare l'output una riga alla volta. Questo significa inoltre che non è possibile richiamare direttamente la procedura da funzioni API del database. Il parametro di output cursor deve essere associato a una variabile di programma, ma le API del database non supportano l'associazione di parametri o variabili di cursor.

Nella seguente tabella viene descritto il formato del cursore restituito da sp_describe_cursor_columns.

Nome colonna

Tipo di dati

Descrizione

column_name

sysname (ammette valori Null)

Nome assegnato alla colonna del set di risultati. La colonna è NULL se è stata specificata senza la clausola AS.

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 in OLE DB. I possibili valori sono i seguenti:

1 = Segnalibro

2 = Lunghezza fissa

4 = Ammette valori Null

8 = Controllo delle versioni delle righe

16 = Colonna aggiornabile (viene impostata per le eventuali colonne di cursore prive della clausola FOR UPDATE; un cursore può includere una sola colonna di questo tipo)

Quando i valori bit vengono combinati, vengono applicate le caratteristiche dei valori bit combinati. Se, ad esempio, il valore bit è 6, la colonna è a lunghezza fissa (2) e ammette valori Null (4).

column_size

int

Dimensioni massime consentite per un valore della colonna.

data_type_sql

smallint

Numero che indica il tipo di dati SQL Server della colonna.

column_precision

tinyint

Precisione massima della colonna in base al valore bPrecision in OLE DB.

column_scale

tinyint

Numero di cifre a destra del separatore decimale per i tipi di dati numeric o decimal in base al valore bScale 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) (ammette valori Null)

A = La colonna è inclusa nella chiave di ordinamento e l'ordine è crescente.

D = La colonna è inclusa nella chiave di ordinamento e l'ordine è decrescente.

NULL = La colonna non partecipa all'ordinamento.

hidden_column

smallint

0 = La colonna è inclusa nell'elenco di selezione.

1 = Riservato per utilizzi futuri.

columnid

int

ID della colonna di base. Se la colonna del set di risultati è stata creata in base a 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 creata in base a 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 creata in base a un'espressione, dbid è -1.

dbname

sysname

(ammette valori Null)

Nome del database contenente la tabella di base che include la colonna. Se la colonna del set di risultati è stata creata in base a un'espressione, dbname è NULL.

Osservazioni

La stored procedure sp_describe_cursor_columns descrive gli attributi delle colonne di un set di risultati di un cursore del server, quali il nome e il tipo di dati di ogni colonna. Utilizzare sp_describe_cursor per ottenere una descrizione degli attributi globali del cursore del server. Utilizzare sp_describe_cursor_tables per ottenere un report delle tabelle di base a cui fa riferimento il cursore. Per ottenere un report relativo ai cursori del server Transact-SQL visibili nella connessione, utilizzare la stored procedure 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 AdventureWorks2008R2;
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