Delen via


OPEN (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

Hiermee opent u een Transact-SQL servercursor en vult u de cursor door de Transact-SQL instructie uit te voeren die is opgegeven in de instructie DECLARE CURSOR of SET cursor_variable .

Transact-SQL syntaxis-conventies

Syntax

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }  

Arguments

GLOBAL
Hiermee geeft u op dat cursor_name verwijst naar een globale cursor.

cursor_name
Is de naam van een gedeclareerde cursor. Als zowel een globale als een lokale cursor met cursor_name als naam bestaat, verwijst cursor_name naar de globale cursor als GLOBAL is opgegeven; anders verwijst cursor_name naar de lokale cursor.

cursor_variable_name
Is de naam van een cursorvariabele die verwijst naar een cursor.

Remarks

Als de cursor wordt gedeclareerd met de optie ONGEVOELIG of STATISCH, maakt OPEN een tijdelijke tabel voor het opslaan van de resultatenset. OPENEN mislukt wanneer de grootte van een rij in de resultatenset groter is dan de maximale rijgrootte voor SQL Server-tabellen. Als de cursor wordt gedeclareerd met de optie KEYSET, maakt OPEN een tijdelijke tabel voor het opslaan van de sleutelset. De tijdelijke tabellen worden opgeslagen in tempdb.

Nadat een cursor is geopend, gebruikt u de functie @@CURSOR_ROWS om het aantal in aanmerking komende rijen in de laatst geopende cursor te ontvangen.

Note

SQL Server biedt geen ondersteuning voor het asynchroon genereren van sleutelsetgestuurde of statische Transact-SQL cursors. Transact-SQL cursorbewerkingen, zoals OPENEN of OPHALEN, worden in batches geplaatst, zodat de asynchrone generatie van Transact-SQL cursors niet nodig is. SQL Server blijft asynchrone keysetgestuurde of statische API-servercursors (Application Programming Interface) ondersteunen waarbij OPEN met lage latentie een probleem is, vanwege retouren van clients voor elke cursorbewerking.

Examples

In het volgende voorbeeld wordt een cursor geopend en worden alle rijen opgehaald.

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;  

See Also

CLOSE (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
CURSOR (Transact-SQL) declareren
FETCH (Transact-SQL)