raiseerror 是由單詞raise和error組成;raise:上升,增加;error:錯誤;
raiseerror:拋出一個錯誤,通常和try,catch配合使用。
代碼示例如下:
BEGIN TRY BEGIN IF @ReturnPointResult<>'1000099' BEGIN SET @ErrorResult= N'Update point of customer failed,ErrorCode:'+@ReturnPointResult; RAISERROR(@ErrorResult, 11, 1); END END END TRY BEGIN CATCH BEGIN DECLARE @ERRORMessage NVARCHAR(2000) SET @ERRORMessage = ERROR_MESSAGE() + CAST(@Step AS NVARCHAR(10)); RAISERROR(@ERRORMessage,11,1) END END CATCH;
第一個參數: 描述錯誤信息,字符串格式。(也可用字符分割,獲取信息)
第二個參數: 用戶定義與該消息關聯的嚴重級別。(很重要)
任何用戶都可以指定0到18之間的嚴重級別。
[0,10]的閉區間內,不會跳到cathc;
[11,19]則跳到catch;
如果是[20,無窮),則直接終止數據庫連接;
第三個參數: 如果在多個位置引發相同的用戶定義錯誤,
則針對每個位置使用唯一的狀態號有助於找到引發錯誤的代碼段。
介於1至127之間的任意整數。(默認值是1)
當state值為0或大於127時會生成錯誤!
第四個參數(不常用): 輸出變量參數。
第五個參數(不常用): 錯誤的自定義選項,可以是下列任何一值
LOG :在錯誤日志和應用程序日志中記錄錯誤;
NOWAIT:將消息立即發送給客戶端;
SETERROR:將 @@ERROR 值和 ERROR_NUMBER 值設置為 msg_id 或 50000;