SQL Server のT-SQLはセットベースのクエリで高いパフォーマンスを発揮するように作られています。しかし、カーソルのほうが処理が高速化する場合もあります。本気時では、簡単なカーソル定義と使用方法のテンプレートを記載します。細かい処理についてはBooks Onlineを参照してください。
T-SQL は SQL Server 2005 Developer Edition で確認しています。
1. 基本的なカーソル使用方法のテンプレート
カーソルは次の手順で使用します。
- カーソル定義
DECLARE カーソル名 CURSOR - カーソルをオープン
OPEN カーソル名 - レコードFETCH
FETCH - カーソルのクローズ
CLOSE カーソル名 - カーソル開放
DEALLOCATE カーソル名
sys.database_principalsビューのレコードをフェッチするサンプルを掲載します。
DECLARE @name nvarchar(255) DECLARE @type_desc nvarchar(max) -- 1. カーソル定義 DECLARE articlesCursor CURSOR FORWARD_ONLY READ_ONLY FOR SELECT TOP 5 name, type_desc FROM sys.database_principals -- 2. カーソルオープン OPEN articlesCursor -- 3. レコードFETCH FETCH NEXT FROM articlesCursor INTO @name, @type_desc WHILE @@FETCH_STATUS = 0 BEGIN PRINT @name + ':' + SUBSTRING(@type_desc,0,10) FETCH NEXT FROM articlesCursor INTO @name, @type_desc END -- 4. カーソルクローズ CLOSE articlesCursor -- 5. カーソル開放 DEALLOCATE articlesCursor
カーソル定義にはさまざまなオプションが指定できます。更新する場合は、FOR UPDATE,フォアワードフェッチ以外のカーソル処理をする場合は、えSCROLLを指定するなどオプションがあります。FETCH文もNEXTだけでなく、 PRIOR, FIRST, LAST, ABSOLUTE, RELATIVEなどを指定できます。
詳細はBOOKS ONLINE を参照願います。
説明は以上です。誤り等がありましたらご指摘ください。
さんのコメント: さんのコメント: