SQL Server

SQLServerでカーソルを使う方法

2018/10/01

SQLServerではプログラム内でカーソルを利用するとテーブル内に保存されている複数行のデータを簡単にプログラムで扱えるようになります。

今回はカーソルの宣言から使い方、後始末までを解説します。

SQLServerのカーソル文

SQLServerにはプログラム内でテーブルに保存されている複数行のデータをSELECT文で取得することで簡単に扱えるようにするために「CURSOR型」が用意されています。

この「CURSOR型」を使うにはちょっとした「お決まり」があるので、以下にその「お決まり」を解説します。

カーソルの宣言

カーソルは普通の変数と同様に宣言する必要があります。

宣言の方法は以下のように「CURSOR型」の変数を宣言します。

カーソルとSELECT文との関連付け

カーソルはSELECT文と関連付けて、そのSELECTの結果をプログラムで利用できるようにするものです。

ですから、カーソルはSELECT文と関連付ける必要があります。

これでSELECT文がカーソル変数と関連付けされました。

カーソルのオープン

カーソルはファイルと同じように利用する前に明示的に「OPEN」する必要があります。

OPEN命令でオープンしたいカーソル名を指定します。

SELECT文の取得(FETCH)

カーソルと関連付けたSELECT文の結果を変数へ代入するには「FETCH」を利用します。

FECTHはどのカーソルから何という変数へデータを代入するのか指定します。

カーソルには関連付けされたSELECT文の結果が複数行設定されているので、FETCHを繰り返すことで1行ずつ取り出すことができます。

SQLServerではFECTHの終了を判断(最後の行を取得したかどうか)するのに「@@FETCH_STATUS」という関数が用意されているので、これを使って最後の行まで1行ずつ取得します。

最終行を取得後FECTHを行うと@@FETCH_STATUSが1を返してくるので、それまでループして処理を行います。

カーソル処理の後始末

カーソル処理はファイル処理などと同じ様に、利用したカーソルをクローズして、メモリ上から解放してやる必要があります。

カーソルをクローズするには「CLOSE」、メモリ上から解放するには「DEALLOCATE」を利用して行います。

まとめ

カーソルを利用するとプログラム内で複数行選択できるデータを簡単に扱えるようになります。

最後に今回の処理をまとめておきます。

以上、「SQLServerでカーソルを使う方法」でした。

スポンサーリンク

-SQL Server
-,

Copyright© ソフトウェア開発日記 , 2019 All Rights Reserved.