基本コードシリーズになります。
今回はSQL構文の「WHILE句」を使う方法です。
テーブルで処理するSQLにおいて、基本的にWHILE句を使用する場面は多くありません。
しかしながら、使用頻度が少ない上にCURSORやFETCHといった、これまた使用頻度の少ない構文も組み合わせて使用する必要があるため、
プログラムの基礎であるループでありながら忘れやすい構文でもあります。
やり方.
WHILE構文を使用するには「CURSOR」を使用し、LISTやTABLEの行をフェッチし処理します。
フェッチとは、CPUの動作のうち、メモリから命令コード(インストラクション)を取り出してくる動作のこと。
引用元:ZDNET – フェッチとは
※ここでの意味合いとしては、LISTやTABLEから行を[取り出す]という動作を表します。
DECLARE @EXAMPLE_LIST LIST
DECLARE @COLUMN1 int
DECLARE @COLUMN2 varchar(max)
DECLARE EXAMPLE_CURSOR CURSOR FOR
SELECT
EXAMPLE_COLUMN_1
,EXAMPLE_COLUMN_2
FROM
@EXAMPLE_LIST
OPEN HOGE_CURSOR
FETCH NEXT FROM HOGE_CURSOR INTO @COLUMN1, @COLUMN2
WHILE @@FETCH_STATUS = 0
BEGIN
~ここに処理~
FETCH NEXT FROM DELETE_CORSOR INTO @COLUMN1, @COLUMN2
END
コード例.
DECLARE @HOGE_LIST LIST –ユーザー定義テーブル
DECLARE @HOGE1 int
DECLARE @HOGE2 varchar(max)
DECLARE HOGE_CURSOR CURSOR FOR
SELECT
HOGE1
,HOGE2
FROM
@HOGE_LIST
OPEN HOGE_CURSOR
FETCH NEXT FROM HOGE_CURSOR INTO @HOGE1, @HOGE2
WHILE @@FETCH_STATUS = 0
BEGIN
~ここに処理~
FETCH NEXT FROM DELETE_CORSOR INTO @HOGE1, @HOGE2
END