[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;
lCuOLO
まだコメントはありません。

コメントする

XHTML: 使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">