FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【ASP.NET・C#】ストアドプロシージャでカーソルを使用する

■今回の紹介

 ストアドでカーソルを使用するときのメモを残します。



■カーソルとは

 1行ずつ処理条件をいれて、データ処理を行うときに使用する
 処理対象のデータセットを作業領域に格納し、順次処理を行っていく。


参考:www.atmarkit.co.jp


■処理手順

 1.ストアドの宣言
 2.一時格納用の変数の宣言
 3.カーソルの宣言
 4.作業対象のデータを作業領域に取得し、カーソルをオープン
 5.一行を取り出す
 6.取り出した時に2で用意した一時格納変数に格納
 7.6で取得した値に応じて処理を行う(別テーブルにinsertや対象データをupdate)
 8.6から7を4で格納した行の数だけ行う(繰り返し処理)
 9.カーソルのクローズ(カーソルが使用するリソースの解放)




【参考ソース】

--ストアドの作成
create procedure cursor_sample as

--変数の宣言
DECLARE @A nvarchar (50)
DECLARE @B nvarchar (50)

--カーソルの宣言
DECLARE Cur_Cursor CURSOR LOCAL FOR
select A,B from Table_1

--カーソルをオープン
open Cur_Cursor

--1行取り出す
FETCH NEXT FROM Cur_Cursor INTO @A,@B

--ループ
WHILE(@@FETCH_STATUS=0)

BEGIN

--1行ごとに以下の処理を行う
UPDATE TableW 
	set C = @B
	where D= @A;

FETCH NEXT FROM Cur_Cursor INTO @A,@B

end

--カーソルを閉じる
CLOSE Cur_Cursor
DEALLOCATE Cur_Cursor

.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }