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符号
详细介绍,请参考网址: