OPEN (Transact-SQL)

Transact-SQL サーバー カーソルをオープンし、DECLARE CURSOR または SET cursor_variable ステートメントで指定される Transact-SQL ステートメントを実行することによって、カーソルを生成します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

引数

GLOBAL

cursor_name でグローバル カーソルを参照することを指定します。

cursor_name

宣言済みのカーソルの名前を指定します。グローバル カーソルとローカル カーソルの両方に cursor_name という名前のカーソルが存在する場合、GLOBAL を指定すると cursor_name はグローバル カーソルを参照し、指定しない場合はローカル カーソルを参照します。

cursor_variable_name

カーソルを参照するカーソル変数の名前を指定します。

解説

INSENSITIVE または STATIC オプションと共にカーソルが宣言されている場合、OPEN を実行すると結果セットを格納する一時テーブルが作成されます。結果セット内の行のサイズが SQL Server テーブルの最大行サイズを超えると、OPEN は失敗します。KEYSET オプションと共にカーソルが宣言されている場合、OPEN を実行するとキーセットを格納する一時テーブルが作成されます。一時テーブルは tempdb に格納されます。

カーソルをオープンした後、最後にオープンしたカーソル内の該当する行数を受け取るには、@@CURSOR_ROWS 関数を使用します。

ms190500.note(ja-jp,SQL.90).gifメモ :
SQL Server 2005 では、キーセット ドリブン カーソルまたは静的 Transact-SQL カーソルを非同期に生成する操作はサポートされていません。OPEN または FETCH などの Transact-SQL カーソル操作はバッチで行われます。したがって、Transact-SQL カーソルを非同期に生成する必要はありません。ただし SQL Server 2005 では、各カーソル操作に対するクライアントのラウンド トリップが原因で低待機時間 OPEN が実行される場合には、非同期の、キーセット ドリブン サーバー カーソルや静的アプリケーション プログラミング インターフェイス (API) サーバー カーソルがサポートされます。

次の例では、カーソルをオープンし、すべての行をフェッチします。

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;

参照

関連項目

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手