sp_cursor_list (Transact-SQL)

Si applica a:SQL Server

Restituisce gli attributi dei cursori del server aperti per la connessione corrente.

Convenzioni di sintassi Transact-SQL

Sintassi

  
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT   
     , [ @cursor_scope = ] cursor_scope  
[;]  

Argomenti

[ @cursor_return= ] cursor_variable_nameOUTPUT
Nome di una variabile di cursore dichiarata. cursor_variable_name è cursore, senza impostazione predefinita. Il cursore restituito è di tipo scorrevole, dinamico e di sola lettura.

[ @cursor_scope= ] cursor_scope
Specifica il livello dei cursori da segnalare. cursor_scope è int, senza impostazione predefinita e può essere uno di questi valori.

Valore Description
1 Restituisce tutti i cursori locali.
2 Restituisce tutti i cursori globali.
3 Restituisce i cursori locali e quelli globali.

Valori del codice restituito

Nessuno

Cursori restituiti

sp_cursor_list restituisce il report come parametro di output del cursore Transact-SQL, non come set di risultati. In questo modo è possibile usare batch Transact-SQL, stored procedure e trigger con l'output di una riga alla volta. Non è possibile richiamare direttamente la procedura da funzioni API del database. Il parametro di output del cursore deve essere associato a una variabile di programma, ma le API del database non supportano l'associazione di parametri o variabili del cursore.

Di seguito è riportato il formato del cursore restituito da sp_cursor_list. Il formato del cursore è analogo a quello restituito da sp_describe_cursor.

Nome colonna Tipo di dati Descrizione
reference_name sysname Nome utilizzato per fare riferimento al cursore. Se il riferimento al cursore è stato impostato tramite il nome specificato in un'istruzione DECLARE CURSOR, il nome di riferimento corrisponde al nome del cursore. Se il riferimento al cursore è stato impostato tramite una variabile, il riferimento corrisponde al nome della variabile di cursore.
cursor_name sysname Nome del cursore che deriva da un'istruzione DECLARE CURSOR. In SQL Server, se il cursore è stato creato impostando una variabile di cursore su un cursore, cursor_name restituisce il nome della variabile di cursore. Nelle versioni precedenti questa colonna di output restituisce un nome generato dal sistema.
cursor_scope smallint 1 = LOCAL

2 = GLOBAL
stato smallint Valori restituiti dalla funzione di sistema CURSOR_STATUS:

1 = Il cursore a cui si fa riferimento tramite il nome o la variabile è aperto. Se il cursore è di tipo insensitive, statico o keyset, il set di risultati contiene almeno una riga. Se invece è dinamico, contiene zero o più righe.

0 = Il cursore a cui si fa riferimento tramite il nome o la variabile è aperto, ma non contiene righe. I cursori dinamici non restituiscono mai questo valore.

-1 = Il cursore a cui si fa riferimento tramite il nome o la variabile è chiuso.

-2 = Si applica solo alle variabili di cursore. Alla variabile non è assegnato alcun cursore. È possibile che un parametro OUTPUT abbia assegnato un cursore alla variabile, ma la stored procedure ha chiuso il cursore prima di completare l'operazione.

-3 = Non esiste alcun cursore o variabile di cursore con il nome specificato oppure alla variabile non è stato assegnato alcun cursore.
modello smallint 1 = Insensitive (o statico)

2 = Keyset

3 = Dinamico

4 = Fast forward-only
concurrency smallint 1 = Di sola lettura.

2 = Blocchi di scorrimento.

3 = Ottimistica.
scrollable smallint 0 = Forward-only

1 = Scorrevole
open_status smallint 0 = Chiuso

1 = Aperto
cursor_rows int Numero di righe del set di risultati. Per altre informazioni, vedere @@CURSOR_ROWS.
fetch_status smallint Stato dell'ultimo recupero del cursore. Per altre informazioni, vedere @@FETCH_STATUS:

0 = Recupero corretto.

-1 = Recupero non riuscito o non compreso entro i limiti del cursore.

-2 = La riga richiesta è mancante.

-9 = Nessun recupero eseguito sul cursore.
column_count smallint Numero di colonne nel set di risultati del cursore.
row_count smallint Numero di righe modificate dopo l'ultima operazione eseguita sul cursore. Per altre informazioni, vedere @@ROWCOUNT.
last_operation smallint Ultima operazione eseguita sul cursore:

0 = Non è stata eseguita alcuna operazione.

1 = OPEN

2 = FETCH

3 = INSERT

4 = UPDATE

5 = DELETE

6 = CLOSE

7 = DEALLOCATE
cursor_handle int Valore univoco che identifica il cursore nell'ambito del server.

Osservazioni:

La stored procedure sp_cursor_list consente di creare un elenco dei cursori del server aperti nella connessione e di ottenere una descrizione degli attributi globali di ogni cursore, ad esempio se è scorrevole e aggiornabile. I cursori elencati tramite sp_cursor_list sono i seguenti:

  • Cursori transact-SQL server.

  • Cursori del server API aperti da un'applicazione ODBC che viene quindi chiamata SQLSetCursorName per denominare il cursore.

Utilizzare sp_describe_cursor_columns per ottenere una descrizione degli attributi del set dei risultati restituito dal cursore. Utilizzare sp_describe_cursor_tables per ottenere un report delle tabelle di base a cui fa riferimento il cursore. sp_describe_cursor segnala le stesse informazioni di sp_cursor_list, ma solo per un cursore specificato.

Autorizzazioni

Le autorizzazioni di esecuzione vengono assegnate per impostazione predefinita al ruolo public.

Esempi

Nell'esempio seguente viene aperto un cursore globale e viene utilizzata la stored procedure sp_cursor_list per creare un report degli attributi del cursore.

USE AdventureWorks2022;  
GO  
-- Declare and open a keyset-driven cursor.  
DECLARE abc CURSOR KEYSET FOR  
SELECT LastName  
FROM Person.Person  
WHERE LastName LIKE 'S%';  
OPEN abc;  
  
-- Declare a cursor variable to hold the cursor output variable  
-- from sp_cursor_list.  
DECLARE @Report CURSOR;  
  
-- Execute sp_cursor_list into the cursor variable.  
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,  
      @cursor_scope = 2;  
  
-- Fetch all the rows from the sp_cursor_list output cursor.  
FETCH NEXT from @Report;  
WHILE (@@FETCH_STATUS <> -1)  
BEGIN  
   FETCH NEXT from @Report;  
END  
  
-- Close and deallocate the cursor from sp_cursor_list.  
CLOSE @Report;  
DEALLOCATE @Report;  
GO  
  
-- Close and deallocate the original cursor.  
CLOSE abc;  
DEALLOCATE abc;  
GO  

Vedi anche

Stored procedure di sistema (Transact-SQL)