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