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