sp_describe_cursor_tables (Transact-SQL)
Si applica a: SQL Server
Crea un report degli oggetti o delle tabelle di base a cui fa riferimento un cursore del server.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_describe_cursor_tables
[ @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 cursore OUTPUT, senza impostazione predefinita e non deve essere associato ad alcun cursore al momento sp_describe_cursor_tables
della chiamata. Il cursore restituito è di tipo scorrevole, dinamico e di sola lettura.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
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. @cursor_source è nvarchar(30), senza impostazione predefinita.
[ @cursor_identity = ] N'cursor_identity'
Quando @cursor_source è , @cursor_identity è il nome di un cursore creato da un'istruzione DECLARE CURSOR
con la LOCAL
parola chiave o che per impostazione predefinita è LOCAL
. local
Quando @cursor_source è , @cursor_identity è il nome di un cursore creato da un'istruzione DECLARE CURSOR
con la GLOBAL
parola chiave o che per impostazione predefinita è GLOBAL
. global
@cursor_identity può anche essere il nome di un cursore del server API aperto da un'applicazione ODBC che ha quindi denominato il cursore chiamando SQLSetCursorName
.
Quando @cursor_source è variable
, @cursor_identity è il nome di una variabile di cursore associata a un cursore aperto.
@cursor_identity è nvarchar(128), senza impostazione predefinita.
Valori del codice restituito
Nessuno.
Cursori restituiti
sp_describe_cursor_tables
incapsula il report come parametro di output del cursore Transact-SQL. 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. Il parametro di output del cursore deve essere associato a una variabile di programma, ma le API non supportano parametri o variabili del cursore di associazione.
Nella tabella seguente viene illustrato il formato del cursore restituito da sp_describe_cursor_tables
.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
table_owner |
sysname | ID utente del proprietario della tabella. |
table_name |
sysname | Nome dell'oggetto o della tabella di base. In SQL Server i cursori del server restituiscono sempre l'oggetto specificato dall'utente, non le tabelle di base. |
optimizer_hint |
smallint | Bitmap costituita da una o più delle opzioni seguenti: 1 = Blocco a livello di riga ( ROWLOCK )4 = Blocco a livello di pagina ( PAGELOCK )8 = Blocco tabella ( TABLOCK )16 = Blocco di tabella esclusivo ( TABLOCKX )32 = Blocco di aggiornamento ( UPDLOCK )64 = Nessun blocco ( NOLOCK )128 = Opzione di prima riga veloce ( FASTFIRST )4096 = Semantica ripetibile di lettura se usata con DECLARE CURSOR (HOLDLOCK )Se si specificano più opzioni, il sistema utilizza l'opzione più restrittiva. Mostra tuttavia sp_describe_cursor_tables i flag specificati nella query. |
lock_type |
smallint | Tipo di blocco di scorrimento richiesto in modo esplicito o implicito per ogni tabella di base sottostante del cursore. Il valore può essere una delle opzioni seguenti: 0 = Nessuna 1 = Condiviso 3 = Aggiornamento |
server_name |
sysname, nullable | Nome del server collegato contenente la tabella. NULL quando OPENQUERY o OPENROWSET vengono usati. |
objectid |
int | ID di oggetto della tabella. 0 quando OPENQUERY o OPENROWSET vengono utilizzati. |
dbid |
int | ID del database in cui risiede la tabella. 0 quando OPENQUERY o OPENROWSET vengono utilizzati. |
dbname |
sysname, nullable | Nome del database contenente la tabella specificata. NULL quando OPENQUERY o OPENROWSET vengono usati. |
Osservazioni:
sp_describe_cursor_tables
descrive le tabelle di base a cui fa riferimento un cursore del server. Per una descrizione degli attributi del set di risultati restituito dal cursore, utilizzare sp_describe_cursor_columns
. Per una descrizione delle caratteristiche globali del cursore, ad esempio la possibilità di scorrimento e l'updatabilità, usare sp_describe_cursor
. 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 sp_describe_cursor_tables
utilizzato per creare report sulle tabelle a cui fa riferimento il cursore.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
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