- PR -

RAISERRORを使用したエラー処理について

1
投稿者投稿内容
Yoko
常連さん
会議室デビュー日: 2004/11/16
投稿数: 20
投稿日時: 2005-04-04 18:42
いつもお世話になっております。
DBはSQL SERVER2000 です。

エラーの処理の仕方について質問いたします。

次のTableAを更新します。
TableAのnoは0以下が登録できないようなルールを設定しています。

tbl_id | no |
1   10
2   20
3   30

次のような更新をしてみました。

DECARE @ErrorCode INT
SET @ErrorCode = 0

UPDATE TableA
SET no = -10
WHERE ( tbl_id = 1 ) AND ( no = 10 )

SET @ErrorCode = @@ERROR
IF @ErrorCode != 0
RAISERORR( 50001, 16, 1 )

☆sysmessagesの50001に
 「TableAでエラーが発生しました」というエラーメッセージを登録済みです。
 (エラーレベルは16です。)

結果は以下の通り、
2つのエラーメッセージが表示されました。

サーバー:メッセージ 513,レベル16,状態1
テーブル「TableA」、列「no」で矛盾が発生しました

サーバー:メッセージ 50001,レベル16,状態1
TableAでエラーが発生しました

1つ目のエラーメッセージ(513の方)を無視して
2つ目のエラーメッセージ(50001の方)だけを表示するようなことはできないのでしょうか?

よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)