Otwórz (języka Transact-SQL)
Otwiera Transact-SQL kursor serwera i wypełnia kursor wykonując Transact-SQL instrukcji DECLARE CURSOR lub zestaw określony cursor_variable Instrukcja.
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 istnieją globalnym i lokalnym kursor z cursor_name jak ich nazwy cursor_name Odwołanie do globalnej kursora, jeśli GLOBAL jest określona; w przeciwnym razie cursor_name odnosi się do lokalnego kursora.cursor_variable_name
Jest nazwą zmiennej kursora, która odwołuje się kursor.
Remarks
Jeśli kursor jest zadeklarowana z INSENSITIVE lub opcja statyczny, otwórz tworzy tabela tymczasowa do przechowywania wyników należy ustawić.OPEN nie powiedzie się, gdy rozmiar każdego wiersza zestaw wyników przekracza rozmiar maksymalny wiersza SQL Server tabele. Jeśli kursor jest zadeklarowana z opcją zestawu KLUCZY, Open (otwarte) powoduje utworzenie tymczasowej tabela do przechowywania zestawu kluczy.Tabele tymczasowe są przechowywane w tempdb.
Po otwarciu kursor, należy użyć funkcja @@ CURSOR_ROWS do otrzymywania liczby kwalifikujących się wierszy w ostatnio otwierane kursora.
Uwaga
Program SQL Server nie obsługuje generowania asynchronicznie opartej na zestaw kluczy lub statyczne kursory języka Transact-SQL.Operacji kursor języka Transact-SQL, takich jak OPEN lub pobrania są batched, dzięki czemu nie jest konieczne w celu wygenerowania asynchronicznego kursorów języka Transact-SQL.Program SQL Server w dalszym ciągu obsługa asynchronicznego aplikacji opartej na zestaw kluczy lub statyczne programowania kursory serwera interfejs programowania aplikacji (API, interfejs programowania aplikacji), gdzie Niskie opóźnienie Open (otwarte) jest istotny, ze względu klient liczbę przekazywanych dla każdej operacji kursor informacji.
Przykłady
Poniższy przykład otwiera kursor i pobiera wszystkie wiersze.
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks.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;