Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Otevře kurzor serveru Transact-SQL a naplní kurzor spuštěním příkazu Transact-SQL zadaného v příkazu DECLARE CURSOR nebo SET cursor_variable .
Syntax
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Arguments
GLOBAL
Určuje, že cursor_name odkazuje na globální kurzor.
cursor_name
Je název deklarovaného kurzoru. Pokud jako název existuje globální i místní kurzor s cursor_name , cursor_name odkazuje na globální kurzor, pokud je zadána funkce GLOBAL; jinak cursor_name odkazuje na místní kurzor.
cursor_variable_name
Je název proměnné kurzoru, která odkazuje na kurzor.
Remarks
Pokud je kurzor deklarován pomocí možnosti INSENSITIVE nebo STATIC, OPEN vytvoří dočasnou tabulku pro uložení sady výsledků. Open selže, když velikost libovolného řádku v sadě výsledků překročí maximální velikost řádku pro tabulky SQL Serveru. Pokud je kurzor deklarován pomocí možnosti KEYSET, open vytvoří dočasnou tabulku pro uložení sady klíčů. Dočasné tabulky jsou uloženy v databázi tempdb.
Po otevření kurzoru pomocí funkce @@CURSOR_ROWS získejte počet opravňujících řádků v posledním otevřeném kurzoru.
Note
SQL Server nepodporuje asynchronní generování sad klíčů řízených nebo statických Transact-SQL kurzory. Transact-SQL operace kurzoru, jako je OPEN nebo FETCH, jsou dávkové, takže asynchronní generování kurzorů Transact-SQL není potřeba. SQL Server nadále podporuje asynchronní kurzory založené na sadách klíčů nebo serverových kurzorech statického aplikačního programovacího rozhraní (API), u kterých se jedná o problém s nízkou latencí OPEN, a to z důvodu odezvy klienta pro každou operaci kurzoru.
Examples
Následující příklad otevře kurzor a načte všechny řádky.
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;
Viz také
ZAVŘÍT (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
DEKLAROVAT KURZOR (Transact-SQL)
APORTUJ (Transact-SQL)