MSDE FunClub | 最終更新日 : 2000/08/18 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) | ||
【第7章418p 〜 419p掲載】 |
-- [SQL07_04.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、静的カーソルを使った -- FETCH NEXT -- の実行例です -- -- カレントデータベースを MySampleTest にする USE MySampleTest GO -- (件処理されました)のメッセージを抑止する SET NOCOUNT ON GO -- 作業用変数の定義 DECLARE @total int , @cnt int DECLARE @社員コード int DECLARE @氏名 varchar(40) -- 静的なローカルカーソルを定義します -- 静的なので、カーソルを開いた後の結果セット内の行数に増減はありません -- しかし実際のテーブル側では、他ユーザによってレコードが削除されることがある -- カーソルの結果セットの内容と現実の内容に食い違いが起こることがある DECLARE My_cur CURSOR LOCAL SCROLL STATIC FOR SELECT 社員コード,氏名 FROM MySampleTest..社員 ORDER BY 社員コード -- ローカルカーソルを開く OPEN My_cur -- 結果セットの行数を取得する SET @total = @@CURSOR_ROWS PRINT '結果セット内のレコード総数 = ' + CAST( @total as varchar ) -- 正の値のときは、結果セットがあります IF( @total > 0 ) BEGIN SET @cnt = 0 -- 結果セットを1行づつ取得する WHILE( @cnt <> @total ) BEGIN -- 1行進めて、その内容を取得 -- このカーソルは、STATIC です FETCH NEXT FROM My_cur INTO @社員コード,@氏名 SET @cnt = @cnt + 1 PRINT CAST( @cnt as char(2) ) + ':' + CAST( @社員コード as char(4) ) + @氏名 END END -- カーソルを閉じる CLOSE My_cur -- 参照関係を解除する DEALLOCATE My_cur GO