SELECT した結果をカーソルを使用してループ処理をする方法
文書番号:20512
プロシージャ内で SELECT した結果を1行ずつループ処理をする方法(雛形)です。
【実行手順】
-
SELECT した結果リストを1行ずつフェッチしてループ処理を実行します。
--カーソルの値を取得する変数宣言 DECLARE @W_COL1 varchar(50) DECLARE @W_COL2 decimal(18,0) --カーソル定義 DECLARE CUR_AAA CURSOR FOR SELECT COL1 ,COL2 FROM TAB_A WHERE TAB_A.COL1 = <条件値> --カーソルオープン OPEN CUR_AAA; --最初の1行目を取得して変数へ値をセット FETCH NEXT FROM CUR_AAA INTO @W_COL1,@W_COL2; --データの行数分ループ処理を実行する WHILE @@FETCH_STATUS = 0 BEGIN -- ========= ループ内の実際の処理 ここから=== INSERT INTO TAB_B VALUES ( @W_COL1 ,@W_COL2 ) -- ========= ループ内の実際の処理 ここまで=== --次の行のデータを取得して変数へ値をセット FETCH NEXT FROM CUR_AAA INTO @W_COL1,@W_COL2; END --カーソルを閉じる CLOSE CUR_AAA; DEALLOCATE CUR_AAA;