| MSDE FunClub |
|
最終更新日 : 2000/08/08 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.08
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第3章219p 〜 220p掲載】 |
-- [SQL03_02.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
-- @@ERROR を使ったSQL文の実行時エラー調査を行う例題です
--
-- ( 件処理されました)の表示を抑制する
SET NOCOUNT ON
GO
-- **********************************************************************
-- もし同じ名前の一時ローカルストアドプロシージャが存在したら削除する
-- 【注意】
-- OBJECTPROPERTY関数は、現在のデータベース内で検査する
-- 一時オブジェクトの存在検査を行う場合は接続先をtempdbにすること
-- **********************************************************************
USE tempdb
GO
IF( (object_id('tempdb..#PROC_エラー表示') IS NOT NULL) AND
OBJECTPROPERTY(object_id('tempdb..#PROC_エラー表示'), 'IsProcedure') = 1 )
BEGIN
PRINT '一時ストアドプロシージャ[#PROC_エラー表示]削除します'
DROP PROCEDURE #PROC_エラー表示
END
IF( (object_id('tempdb..#PROC_エラーリセット') IS NOT NULL) AND
OBJECTPROPERTY(object_id('tempdb..#PROC_エラーリセット'), 'IsProcedure') = 1 )
BEGIN
PRINT '一時ストアドプロシージャ[#PROC_エラーリセット]削除します'
DROP PROCEDURE #PROC_エラーリセット
END
GO
-- **********************************************************
-- エラー値を表示するローカル一時ストアドプロシージャの登録
-- **********************************************************
CREATE PROCEDURE #PROC_エラー表示
@code int
AS
-- 0でないときにエラーが起きました
IF( @code <> 0 )
BEGIN
PRINT ''
PRINT '直前の命令でエラーが発生しました。エラー番号=' + CAST(@code AS varchar) + 'です'
END
PRINT ''
GO
-- 上のバッチ操作でエラーが起きましたか?
#PROC_エラー表示 @@ERROR
GO
-- **********************************************************
-- エラー値をリセットするローカル一時ストアドプロシージャの登録
-- **********************************************************
CREATE PROCEDURE #PROC_エラーリセット
AS
DECLARE @dum int -- エラー値をリセットするためには、
SELECT @dum = 0 -- 正常に終わる命令を実行すればよい
GO
-- 上のバッチ操作でエラーが起きましたか?
#PROC_エラー表示 @@ERROR
GO
-- エラーリセット
#PROC_エラーリセット
PRINT '現在のERROR値の確認 = ' + CAST(@@ERROR AS varchar)
PRINT ''
GO
-- テーブルが存在しないSELECT文の実行
SELECT id,id2 FROM #TMP_NO_EXIST
GO
-- エラーが起きましたか?
#PROC_エラー表示 @@ERROR
GO
-- エラーリセット
#PROC_エラーリセット
PRINT 'エラーをリセットしました。現在のERROR値の確認 = ' + CAST(@@ERROR AS varchar)
PRINT ''
GO
-- テーブルが存在しない
INSERT INTO #TMP_NO_EXIST2 VALUES(1,2,3,4)
GO
-- エラーが起きましたか?
#PROC_エラー表示 @@ERROR
GO
-- 一時ストアドプロシージャを削除する
DROP PROCEDURE #PROC_エラー表示
DROP PROCEDURE #PROC_エラーリセット
GO