OPEN (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Apre un cursore server Transact-SQL e popola il cursore mediante l'istruzione Transact-SQL specificata nell'istruzione DECLARE CURSOR o SET cursor_variable.

Convenzioni di sintassi Transact-SQL

Sintassi

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

GLOBAL
Specifica che cursor_name fa riferimento a un cursore globale.

cursor_name
Nome del cursore dichiarato. Se esistono sia un cursore globale che un cursore locale con il nome cursor_name, cursor_name fa riferimento al cursore globale se viene specificato l'argomento GLOBAL. In caso contrario, cursor_name fa riferimento al cursore locale.

cursor_variable_name
Nome di una variabile di cursore che fa riferimento a un cursore.

Osservazioni:

Se il cursore viene dichiarato con l'opzione INSENSITIVE o STATIC, OPEN crea una tabella temporanea per il set di risultati. OPEN ha esito negativo se le dimensioni di una riga del set dei risultati supera le dimensioni massime consentite per le righe delle tabelle di SQL Server. Se il cursore viene dichiarato con l'opzione KEYSET, OPEN crea una tabella temporanea per il keyset. Le tabelle temporanee vengono archiviate in tempdb.

Dopo l'apertura di un cursore, usare la funzione @@CURSOR_ROWS per ricevere il numero di righe qualificate nell'ultimo cursore aperto.

Nota

SQL Server non supporta la generazione di cursori Transact-SQL statici o basati su keyset in modo asincrono. Le operazioni di cursore Transact-SQL, ad esempio OPEN o FETCH, vengono raggruppate in batch, pertanto non è necessaria la generazione asincrona di cursori Transact-SQL. SQL Server continua a supportare cursori server API (KeySet-Driven o Static Application Programming Interface) asincroni in cui open a bassa latenza è un problema, a causa di round trip client per ogni operazione di cursore.

Esempi

Nell'esempio seguente viene aperto un cursore e vengono recuperate tutte le righe.

DECLARE Employee_Cursor CURSOR FOR  
SELECT LastName, FirstName  
FROM AdventureWorks2022.HumanResources.vEmployee  
WHERE LastName like 'B%';  
  
OPEN Employee_Cursor;  
  
FETCH NEXT FROM Employee_Cursor;  
WHILE @@FETCH_STATUS = 0  
BEGIN  
    FETCH NEXT FROM Employee_Cursor  
END;  
  
CLOSE Employee_Cursor;  
DEALLOCATE Employee_Cursor;  

Vedi anche

CLO edizione Standard (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
FETCH (Transact-SQL)