アーカイブ
-
[SQLServer]カーソル サンプル
PostgreSQLに引き続き、あまりにもよく使用するので、テンプレート化してみた。
比較してみると、カーソル処理に関してはPostgreSQLのほうが楽チンかも。--#------------------------------------------------------------------- --# 使用変数の定義 --#------------------------------------------------------------------- DECLARE --# カーソル変数 @CursorTargetData CURSOR --# 以下、フェッチした内容を格納する為の変数 , @wCurColumn1 int -- カーソルの1番目の列 , @wCurColumn2 int -- カーソルの2番目の列 ; --#------------------------------------------------------------------- --# カーソル定義を行い、メモリに読み込む --#------------------------------------------------------------------- SET @CursorTargetData = CURSOR FOR --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- --# 以下に、読み込み対象となるSELECT文を定義(ORDER BY句は必須) --# <Todo> SELECT TableA.Column1 , TableA.Column2 FROM TableA ORDER BY TableA.Column1 --# </Todo> --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- ; --#------------------------------------------------------------------- --# カーソルオープン --#------------------------------------------------------------------- OPEN @CursorTargetData; --#------------------------------------------------------------------- --# 現在のカーソルをフェッチ --#------------------------------------------------------------------- FETCH NEXT FROM @CursorTargetData INTO --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- --# 以下に、フェッチしたカーソルデータを格納する変数を順序に合わせて定義 --# <Todo> @wCurColumn1 , @wCurColumn2 --# </Todo> --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- ; --#------------------------------------------------------------------- --# 以下、カーソルフェッチループ --#------------------------------------------------------------------- WHILE (@@FETCH_STATUS = 0) BEGIN --#------------------------------------------------------------------- --# 次のカーソルへ移動 --#------------------------------------------------------------------- FETCH NEXT FROM @CursorTargetData INTO --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- --# 以下に、フェッチしたカーソルデータを格納する変数を順序に合わせて定義 --# <Todo> @wCurColumn1 , @wCurColumn2 --# </Todo> --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- ; END; --#------------------------------------------------------------------- --# カーソルクローズ --#------------------------------------------------------------------- CLOSE @CursorTargetData; --#------------------------------------------------------------------- --# カーソルをメモリより解放 --#------------------------------------------------------------------- DEALLOCATE @CursorTargetData;2010年 4月 8日 | Filed under SQLServer -
[PostgreSQL]カーソル サンプル
あまりにもよく使用するので、テンプレート化してみた。
DECLARE --#------------------------------------------------------------------- --# 使用変数の定義 --#------------------------------------------------------------------- -- アンバウンドカーソル cursor_mydata refcursor; -- フェッチした内容を格納する為のレコード rec_nowdata record; BEGIN --#------------------------------------------------------------------- --# カーソルオープン --#------------------------------------------------------------------- OPEN cursor_mydata FOR --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- --# 以下に、読み込み対象となるSELECT文を定義(ORDER BY句は必須) --# <Todo> SELECT table_dummy.pkey FROM table_dummy ORDER BY table_dummy.pkey --# </Todo> --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- ; --#------------------------------------------------------------------- --# 以下、カーソルフェッチループ --#------------------------------------------------------------------- LOOP --# 現在のカーソルを指定レコードに格納(フェッチする) FETCH cursor_mydata INTO rec_nowdata; IF NOT FOUND THEN --# 最後まで読み込み終わればループ終了 EXIT; END IF; --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- --# 以下に、現在行データに対する処理を記述 --# <Todo> -- ※ rec_nowdata.pkey という感じで、レコードのカラムを使用できます。 --# </Todo> --#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- END LOOP; --#------------------------------------------------------------------- --# カーソルクローズ --#------------------------------------------------------------------- CLOSE cursor_mydata; END2010年 2月 19日 | Filed under PostgreSQL