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




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

ウィンドウを閉じる


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


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