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

-- [SQL03_10.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--     スクリプト全体を強制終了させるためにローカル一時
--     テーブルを活用した例題です
--


-- ( 件処理されました)の表示を抑制する
    SET NOCOUNT ON
GO

-- **************************************************
--    既存のオブジェクトが存在したらそれを削除します
--        一時オブジェクトはtempdbに作成されます
-- **************************************************
    USE tempdb
GO
    IF( (object_id('tempdb..#ERROR_TBL') IS NOT NULL ) AND
        OBJECTPROPERTY(object_id('tempdb..#ERROR_TBL'),'IsTable') = 1 )
      BEGIN
              PRINT '#ERROR_TBL一時テーブルを削除します'
              DROP TABLE #ERROR_TBL
      END

    IF ( (object_id('tempdb..#IsEnd') IS NOT NULL ) AND
         OBJECTPROPERTY(object_id('tempdb..#IsEnd'),'IsProcedure') = 1 )
      BEGIN
              PRINT '#IsEnd一時ストアドプロシージャを削除します'
              DROP PROCEDURE #IsEnd
      END
GO

-- ****************************************************************
--                【ローカル一時テーブルの作成】
--   ここでは、レコードが存在したら強制終了のために使用します
--   列の中に、アプリケーションに応じて有効な情報を入れてください
-- ****************************************************************
    CREATE TABLE #ERROR_TBL( msg varchar(80) )
GO


-- ****************************************************************
--          【ローカル一時ストアドプロシージャの作成】
--   バッチ処理を実行してもよろしいですか?
--    #ERROR_TBLテーブルの中にレコードが存在しなければ、OKです
--    レコードが存在したら、強制終了します  
-- ****************************************************************
    CREATE PROCEDURE #IsEnd
    AS
        SET NOCOUNT ON
        -- レコードが存在したら戻り値は真を返す
        IF EXISTS ( SELECT * FROM  #ERROR_TBL ) RETURN 1
        -- レコードが存在しなければ偽を返す
        RETURN 0
GO


-- **************************
--  【アプリケーション開始】
-- **************************
    -- わざとエラーを発生させます
    SELECT * FROM #TMP_NOEXISTS
GO

-- エラーが起きたらレコードを登録します
     IF( @@ERROR <> 0 ) INSERT INTO #ERROR_TBL VALUES( '強制終了' )
GO

-- バッチの先頭で継続実行が許可されているかどうかテストする
    DECLARE @Ret int
    EXEC @Ret = #IsEnd
    IF( @Ret = 1 ) RETURN
    PRINT 'このPRINT 文は実行されません'
GO

-- バッチの先頭で継続実行が許可されているかどうかテストする
    DECLARE @Ret int
    EXEC @Ret = #IsEnd
    IF( @Ret = 1 ) RETURN
    PRINT 'このPRINT 文は実行されません'
GO

-- 終了処理
    DROP TABLE #ERROR_TBL
    DROP PROCEDURE #IsEnd
GO




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

ウィンドウを閉じる


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


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