SQLServerのストアドで、動的SQLからカーソルを使ってループするサンプルです。
サンプル
例)動的SQLをカーソルでループする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
--変数定義 DECLARE @sql varchar(max); DECLARE @name varchar(100) DECLARE @objectid int --SQL文作成 SET @sql = 'SELECT name, object_id ' SET @sql = @sql + 'FROM sys.tables ' --カーソルを定義する EXEC('DECLARE cur CURSOR FOR ' + @sql) --カーソルを開く OPEN cur --次のレコードを取得する FETCH NEXT FROM cur INTO @name, @objectid --レコードが存在する間ループする WHILE @@FETCH_STATUS = 0 BEGIN --取得した値を表示する print @name print @objectid --次のレコードを取得する FETCH NEXT FROM cur INTO @name, @objectid END --カーソルを閉じる CLOSE cur DEALLOCATE cur |
備考
- カーソルを使い終わったら必ずCLOSEとDEALLOCATEを忘れずに行ってください。 (上記サンプルの33行目と34行目)