OPEN (Transact-SQL)

Öffnet einen Transact-SQL-Servercursor und füllt den Cursor auf, indem die in der Anweisung DECLARE CURSOR oder SET cursor_variable angegebene Transact-SQL-Anweisung ausgeführt wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

Argumente

GLOBAL

Gibt an, dass cursor_name auf einen globalen Cursor verweist.

cursor_name

Der Name eines deklarierten Cursors. Falls sowohl ein globaler als auch ein lokaler Cursor mit dem Namen cursor_name vorhanden sind, bezieht sich cursor_name auf den globalen Cursor, wenn GLOBAL angegeben wird. Andernfalls bezieht sich cursor_name auf den lokalen Cursor.

cursor_variable_name

Der Name einer Cursorvariablen, die auf einen Cursor verweist.

Hinweise

Falls der Cursor mit der Option INSENSITIVE oder STATIC deklariert wird, erstellt OPEN eine temporäre Tabelle für das Resultset. OPEN schlägt fehl, wenn die Größe einer Zeile im Resultset die Maximalgröße für SQL Server-Tabellen überschreitet. Falls der Cursor mit der Option KEYSET deklariert wird, erstellt OPEN eine temporäre Tabelle für das Keyset. Die temporären Tabellen werden in tempdb gespeichert.

Nachdem ein Cursor geöffnet wurde, kann mit der @@CURSOR_ROWS-Funktion die Anzahl der Zeilen im letzten geöffneten Cursor erhalten werden, die der Bedingung entsprechen.

ms190500.note(de-de,SQL.90).gifHinweis:
SQL Server 2005 unterstützt nicht das asynchrone Generieren von keysetgesteuerten oder statischen Transact-SQL-Cursorn. Transact-SQL-Cursorvorgänge wie OPEN oder FETCH werden als Batch ausgeführt, sodass die asynchrone Generierung von Transact-SQL-Cursorn nicht erforderlich ist. SQL Server 2005 unterstützt weiterhin asynchrone keysetgesteuerte und statische API-Servercursor (Application Programming Interface) für den Fall, dass eine geringe Wartezeit von OPEN wegen Clientroundtrips bei jedem Cursorvorgang ein Problem darstellt.

Beispiele

Im folgenden Beispiel wird ein Cursor geöffnet, und es werden alle Zeilen abgerufen.

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;

Siehe auch

Verweis

CLOSE (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
FETCH (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005