sqlserver中raiserror的⽤法(动态参数传值)
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)创建⼀个加减乘除算法的存储过程
/***********************
server error翻译**功能:进⾏加减乘除计算
**参数:@Num1(参数1)、@Num2(参数2)
@opeType(计算类型)、@num3(返回结果)
***************************/
create procedure pro_CalculateNum
@Num1int,
@Num2int,
@opeType int,
@num3decimal 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符号
详细介绍,请参考⽹址: