| MSDE FunClub |
|
最終更新日 : 2000/08/21 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.21
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第8章500p 〜 502p掲載】 |
-- [SQL08_09R.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
-- トランザクションのコミット済み読み取り(READ COMMITTED)
-- を理解します
-- テーブルからコミット済みデータを読み込む例題です
--
-- カレントデータベースを MySampleTest にする
USE MySampleTest
GO
-- (件処理されました)のメッセージを抑止する
SET NOCOUNT ON
GO
-- トランザクションの分離レベルの設定
-- コミット済み読み取り モードです
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
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