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 di sintassi Transact-SQL

Sintassi

sp_describe_cursor_tables
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'variable' }
    , [ @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'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. @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_tablesincapsula 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