Condividi tramite


sp_describe_cursor_tables (Transact-SQL)

Crea un report degli oggetti o delle tabelle di base a cui fa riferimento un cursore del server.

Icona di collegamento a un argomentoConvenzioni 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 la ricezione dell'output del cursore. output_cursor_variable è di tipo cursor e non prevede alcun valore predefinito. È inoltre necessario che la variabile non sia associata ad alcun cursore al momento della chiamata della stored procedure 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 oggetto del 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 specificata in modo esplicito o utilizzata per impostazione predefinita. global_cursor_name può inoltre essere il nome di un cursore API del server aperto da un'applicazione ODBC che ha specificato il cursore tramite una chiamata di SQLSetCursorName. global_cursor_name è di tipo 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).

Osservazioni

La stored procedure 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.

Valori restituiti

Nessuno

Cursori restituiti

sp_describe_cursor_tables incapsula il report generato come parametro di output cursor Transact-SQL. 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 non supportano l'associazione di parametri o variabili cursor.

Nella tabella seguente viene descritto 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 2005 i cursori del server restituiscono sempre l'oggetto specificato dall'utente e non le tabelle di base. In SQL Server 2000 i cursori del server restituiscono le tabelle di base, a meno che la vista o la funzione non venga creata con WITH VIEW_METADATA.

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. La stored procedure sp_describe_cursor_tables, tuttavia, visualizza 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. 0 se si utilizza OPENQUERY o OPENROWSET.

dbname

sysname, nullable

Nome del database contenente la tabella. NULL se si utilizza OPENQUERY o OPENROWSET.

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 AdventureWorks
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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

CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Stored procedure di sistema (Transact-SQL)

Altre risorse

Cursori (Motore di database)

Guida in linea e informazioni

Assistenza su SQL Server 2005