sp_describe_cursor_tables (Transact-SQL)
Crea un report degli oggetti o delle tabelle di base a cui fa riferimento un cursore del server.
Si applica a: SQL Server (da SQL Server 2008 a versione corrente). |
Convenzioni della sintassi Transact-SQL
Sintassi
sp_describe_cursor_tables
[ @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_variableOUTPUT
Nome di una variabile di cursore dichiarata per ricevere l'output del cursore. output_cursor_variable è di tipo cursor, non prevede valori predefiniti e non deve essere associato a cursori quando viene chiamato sp_describe_cursor_tables. 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 specificata in modo esplicito o utilizzata per impostazione predefinita. 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 impostato sul valore predefinito GLOBAL. 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.global_cursor_name is nvarchar(128).[ @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_tables incapsula il report in un parametro di output Transact-SQL cursor. In questo modo i batch, le stored procedure e i trigger Transact-SQL possono elaborare l'output una riga alla volta. Ciò significa inoltre che non è possibile chiamare direttamente la procedura da funzioni API. 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 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 e non le tabelle di base. |
Optimizer_hints |
smallint |
Mappa di bit composta da uno o più dei valori seguenti: 1 = Blocco a livello di riga (ROWLOCK) 4 = Blocco a livello di pagina (PAGELOCK) 8 = Blocco a livello di tabella (TABLOCK) 16 = Blocco esclusivo a livello di tabella (TABLOCKX) 32 = Blocco di aggiornamento (UPDLOCK) 64 = Nessun blocco (NOLOCK) 128 = Opzione recupero rapido prime n righe (FASTFIRSTROW) 4096 = Semantica di lettura ripetibile se utilizzata con DECLARE CURSOR (HOLDLOCK) Se si specificano più opzioni, il sistema utilizza l'opzione più restrittiva. Tuttavia, sp_describe_cursor_tables mostra 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. I possibili valori sono i seguenti: 0 = Nessuno 1 = Condiviso 3 = Aggiornamento |
server_name |
sysname, nullable |
Nome del server collegato contenente la tabella. NULL se si utilizza OPENQUERY o OPENROWSET. |
Objectid |
int |
ID di oggetto della tabella. 0 se si utilizza OPENQUERY o OPENROWSET. |
dbid |
int |
ID del database contenente la tabella specificata. 0 se si utilizza OPENQUERY o OPENROWSET. |
dbname |
sysname, nullable |
Nome del database contenente la tabella specificata. NULL se si utilizza OPENQUERY o OPENROWSET. |
Osservazioni
sp_describe_cursor_tables descrive le tabelle di base a cui fa riferimento un cursore del server. Utilizzare sp_describe_cursor_columns per ottenere una descrizione degli attributi del set dei risultati restituito dal cursore. Utilizzare sp_describe_cursor per ottenere una descrizione delle caratteristiche globali del cursore, come il supporto dello scorrimento e degli aggiornamenti. Utilizzare sp_cursor_list per ottenere un report dei cursori del server Transact-SQL visibili nella connessione.
Autorizzazioni
È richiesta l'appartenenza al ruolo public.
Esempi
Nell'esempio seguente viene aperto un cursore globale ed eseguita la stored procedure sp_describe_cursor_tables per creare un report sulle tabelle a cui fa riferimento il cursore.
USE AdventureWorks2012;
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
Vedere anche
Riferimento
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Stored procedure di sistema (Transact-SQL)