| MSDE FunClub |
|
最終更新日 : 2000/08/18 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.18
|
|
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