MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/08/21
Microsoft Data Engine FunClub
Since 2000.08.21
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第8章503p 〜 503p掲載】

-- [SQL08_09R2.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--      トランザクションの反復可能読み取り(REPEATABLE READ) 
-- を理解します
--

-- カレントデータベースを MySampleTest にする
    USE MySampleTest
GO

-- (件処理されました)のメッセージを抑止する
    SET NOCOUNT ON
GO

-- トランザクションの分離レベルの設定
-- 反復可能読み取り モードです
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO


-- *********************************************
--  コミット状態のテーブルからデータを読み取る
-- *********************************************
    DECLARE @CNT int , @TOTAL int
    SET @CNT = 0
    PRINT ''
 
    -- トランザクション開始
    BEGIN TRANSACTION
        WHILE( @CNT <> 3 )
           BEGIN
                 SET @CNT = @CNT + 1

                 -- 読み出し操作を実行する
                 -- コミット済みデータが読み出される
                 SELECT @TOTAL = SUM(NUMBER) FROM SUM_TABLE
                        WHERE( NUMBER BETWEEN 0 AND 100 )

                 IF( @TOTAL IS NULL )
                   BEGIN
                        RAISERROR('回数=%2d その値=NULL',0,1,@CNT) WITH NOWAIT
                   END
                 ELSE
                   BEGIN
                        RAISERROR('回数=%2d その値=%d',0,1,@CNT,@TOTAL) WITH NOWAIT
                   END
                 PRINT ''
                  -- 1回読み出したら15秒待機
                 -- 15秒に特別な意味はないが、2or3回の読み取り時にDELETEが行われる
                 WAITFOR DELAY '00:00:15'
            END
    COMMIT TRANSACTION
    RAISERROR('End. 計算結果を比較しましょう',0,1) WITH NOWAIT
GO

-- 標準モードに戻す
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED 
GO




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません