Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Öppnar en Transact-SQL-servermarkör och fyller markören genom att köra Transact-SQL-instruktionen som anges i instruktionen DECLARE CURSOR eller SET cursor_variable .
Transact-SQL syntaxkonventioner
Syntax
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Arguments
GLOBAL
Anger att cursor_name refererar till en global markör.
cursor_name
Är namnet på en deklarerad markör. Om både en global och en lokal markör finns med cursor_name som namn refererar cursor_name till den globala markören om GLOBAL anges. annars refererar cursor_name till den lokala markören.
cursor_variable_name
Är namnet på en markörvariabel som refererar till en markör.
Remarks
Om markören deklareras med alternativet INSENSITIVE eller STATIC skapar OPEN en tillfällig tabell som innehåller resultatuppsättningen. OPEN misslyckas när storleken på en rad i resultatuppsättningen överskrider den maximala radstorleken för SQL Server-tabeller. Om markören deklareras med alternativet KEYSET skapar OPEN en tillfällig tabell som innehåller nyckeluppsättningen. De temporära tabellerna lagras i tempdb.
När en markör har öppnats använder du funktionen @@CURSOR_ROWS för att ta emot antalet kvalificerande rader i den senast öppnade markören.
Note
SQL Server stöder inte generering av nyckeluppsättningsdrivna eller statiska Transact-SQL markörer asynkront. Transact-SQL marköråtgärder som OPEN eller FETCH batchas, så det finns inget behov av den asynkrona genereringen av Transact-SQL markörer. SQL Server fortsätter att ha stöd för api-servermarkörer (asynkrona keyset-drivna eller statiska program) där öppen svarstid är ett problem, på grund av klientens rundresor för varje marköråtgärd.
Examples
I följande exempel öppnas en markör och alla rader hämtas.
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)
DEKLARERA MARKÖREN (Transact-SQL)
FETCH (Transact-SQL)