首页 > 数据库技术 > 详细

sql server中raiserror的用法(动态参数传值)

时间:2019-08-20 19:23:15      阅读:173      评论:0      收藏:0      [点我收藏+]

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符号

技术分享图片

详细介绍,请参考网址:

https://www.bbsmax.com/A/A2dmVpmqze/

sql server中raiserror的用法(动态参数传值)

原文:https://www.cnblogs.com/xielong/p/11384709.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!