zoukankan      html  css  js  c++  java
  • sql server中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)创建一个加减乘除算法的存储过程

    /***********************
    **功能:进行加减乘除计算
    **参数:@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/

  • 相关阅读:
    通过注册表找网站绝对路径
    西普学院Crypto之用户名和密码
    西普学院Crypto之一段奇怪的代码
    西普学院Crypto之先有鸡还是先有蛋
    西普学院Crypto之摩擦摩擦
    西普学院Crypto之凯撒是罗马共和国杰出的军事统帅
    各类文件的文件头标志[转]
    收藏的几个脑图
    同源策略详解及绕过[转]
    Python学习#1
  • 原文地址:https://www.cnblogs.com/xielong/p/11384709.html
Copyright © 2011-2022 走看看