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 relative alla sintassi Transact-SQL
Sintassi
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
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 asincrona di cursori Transact-SQL gestiti da keyset o statici. Le operazioni del cursore Transact-SQL, ad esempio OPEN o FETCH, vengono eseguite in batch. Non è quindi necessario generare i cursori in modo asincrono. SQL Server supporta ancora i cursori API del server statici o gestiti da keyset asincroni nei casi in cui l'istruzione OPEN a bassa latenza costituisce un problema, a causa dei round trip del client per ogni operazione del 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
CLOSE (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
FETCH (Transact-SQL)