Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-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)