Otwórz (Transact-SQL)
Otwiera Transact-SQL serwera kursor i wypełnia kursor przez wykonywanie Transact-SQL instrukcja DECLARE CURSOR lub określony zestaw cursor_variable instrukcja.
Składnia
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Argumenty
GLOBALNE
Określa, że cursor_name odnosi się do globalnego kursor.cursor_name
Jest nazwą zadeklarowanej kursor.Jeśli istnieje globalnym i lokalnym kursor z cursor_name jako swojej nazwy cursor_name odnosi się do globalnego kursor , jeżeli określono globalne; w przeciwnym razie cursor_name odnosi się do lokalnego kursor.cursor_variable_name
Jest nazwą zmiennej kursor , która odwołuje się kursor.
Uwagi
kursor jest zadeklarowana ze INSENSITIVE lub opcja STATYCZNEJ, otwórz tworzy tymczasowej tabela do przechowywania zestaw wyników.Otwórz nie powiedzie się, gdy rozmiar każdego wiersza w zestaw wyników przekracza maksymalny rozmiar wiersza dla SQL Server tabele.Jeśli kursor jest zadeklarowana z opcją zestawu KLUCZY, otwórz tworzy tymczasowej tabela do przechowywania zestawu kluczy.Tabele tymczasowe są przechowywane w tempdb.
Po otwarciu kursor wykorzystania @@ CURSOR_ROWS funkcja do otrzymywania liczby kwalifikujących się wierszy w ostatniej otwartej kursor.
Ostrzeżenie
SQL Servernie obsługuje generowania statyczne lub zależne od zestawu kluczy Transact-SQL kursory asynchronicznie.Transact-SQL operacjekursor , takich jak otwieranie lub pobieranie, batched, dzięki czemu nie ma potrzeby dla asynchronicznego generacji Transact-SQL kursory.SQL Serverw dalszym ciągu obsługuje kursory serwera asynchronicznego statyczne lub zależne od zestawu kluczy interfejs programowania aplikacji (API) gdzie małego opóźnienie otwarty jest istotny, ze względu na klient liczbę przekazywanych informacji dla każdej operacji kursor .
Przykłady
Poniższy przykład otwiera kursor i pobiera wszystkie wiersze.
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2008R2.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;