HOME >> Tips >> SQL Server Tips >> SQL

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;