1、raiserrror定義: 返回用戶定義的錯誤信息並設系統標志,記錄發生錯誤。通過使用 RAISERROR 語句,客戶端可以從 sysmessages 表中檢索條目,
或者使用用戶指定的嚴重度和狀態信息動態地生成一條消息。這條消息在定義后就作為服務器錯誤信息返回給客戶端。
2、raiserrror語法
RAISERROR ( { msg_id | msg_str } { , severity , state }
3、raiserrror用法
--不帶動態參數返回錯誤信息 raiserror('參數有誤,入庫數量不能為0',16,1) ----帶動態參數返回錯誤信息 raiserror('參數%s[%d]有誤,%s',16,1,'@Num2',@Num2,@msg)
4、簡單例子
1)創建一個加減乘除算法的存儲過程
/*********************** **功能:進行加減乘除計算 **參數:@Num1(參數1)、@Num2(參數2) @opeType(計算類型)、@num3(返回結果) ***************************/ create procedure pro_CalculateNum @Num1 int, @Num2 int, @opeType int, @num3 decimal output as begin declare @msg varchar(50) --進行加法運算 if @opeType=1 begin set @num3 = @Num1+@Num2; --打印結果 print @num3; end --進行減法運算 if @opeType=2 begin set @num3 = @Num1-@Num2; --打印結果 print @num3; end --進行乘法運算 if @opeType=3 begin set @num3 = @Num1*@Num2; --打印結果 print @num3; end --進行除法運算 if @opeType=4 begin if @Num2=0 begin set @msg='進行除法,遇到以零作除數錯誤'; --拋出自定義錯誤信息 raiserror('參數%s[%d]有誤,%s',16,1,'@Num2',@Num2,@msg) end else begin set @num3 = @Num1/@Num2; --打印結果 print @num3; end end --進行取模%運算 if @opeType=5 begin if @Num2=0 begin set @msg='進行取模,遇到以零作除數錯誤'; --拋出自定義錯誤信息 raiserror('參數%s[%d]有誤,%s',16,1,'@Num2',@Num2,@msg) end else begin set @num3 = @Num1%@Num2; --打印結果 print @num3; end end end;
2)進行存儲過程調用(除數為0時,我們把錯誤重新自定義了)
--調用存儲過程(除數為0)-- declare @result decimal exec pro_CalculateNum 12,0,4,@result output
調用結果
3)進行存儲過程調用(除數不為0)
--調用存儲過程(除數不為0)-- declare @result decimal exec pro_CalculateNum 12,3,4,@result output
調用結果
5、raiserrror符號
詳細介紹,請參考網址: