• raiserror的用法


    描述:
    raiserror :是用于抛出一个错误

    第一个参数:{ msg_id | msg_str | @local_variable }
    msg_id:表示可以是一个sys.messages表中定义的消息代号;
    使用 sp_addmessage 存储在 sys.messages 目录视图中的用户定义错误消息号。
    用户定义错误消息的错误号应当大于 50000。

    msg_str:表示也可以是一个用户定义消息,该错误消息最长可以有 2047 个字符;
    (如果是常量,请使用N'xxxx',因为是nvarchar的)
    当指定 msg_str 时,RAISERROR 将引发一个错误号为 5000 的错误消息。

    @local_variable:表示也可以是按照 msg_str 方式的格式化字符串变量。

    第二个参数:severity
    用户定义的与该消息关联的严重级别。(这个很重要)
    任何用户都可以指定 0 到 18 之间的严重级别。
    [0,10]的闭区间内,不会跳到catch;
    如果是[11,19],则跳到catch;
    如果[20,无穷),则直接终止数据库连接;

    第三个参数:state
    如果在多个位置引发相同的用户定义错误,
    则针对每个位置使用唯一的状态号有助于找到引发错误的代码段。

    介于 1 至 127 之间的任意整数。(state 默认值为1)
    当state 值为 0 或大于 127 时会生成错误!

    第四个参数:argument
    用于代替 msg_str 或对应于 msg_id 的消息中的定义的变量的参数。

    第五个参数:option
    错误的自定义选项,可以是下表中的任一值:
    LOG :在错误日志和应用程序日志中记录错误;
    NOWAIT:将消息立即发送给客户端;
    SETERROR:将 @@ERROR 值和 ERROR_NUMBER 值设置为 msg_id 或 50000;

    IF EXISTS(SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'tb') and xtype='U')
    DROP TABLE tb
    
    go
    CREATE TABLE tb
    (
       [ID]    INT NOT NULL,
       [NAME]  VARCHAR(200)  
    )
    go
    ------------------------------测试SQL块
    declare @ID as int  
    select @ID = ID from tb  
    if @ID is null 
    begin 
        raiserror(N'没有记录,表为空。', 16, 1) 
    end  
     

    运行脚本后的结果为:

  • 相关阅读:
    IDEA大于等于,不等于、小于等于等等符号设置
    大众点评订单系统分库分表实践
    oracle 监听 hang住
    Linux_查看网卡使用的网络带宽情况
    Git_暂存功能
    Python_镜像安装源
    java8新特性专题之六、筛选和切片
    java8新特性专题之四、lambda方法引用和构造器引用
    java8新特性专题之二、lambda基础语法
    java8新特性专题之八、java中Optional的使用详细解析
  • 原文地址:https://www.cnblogs.com/OliverQin/p/5125038.html
Copyright © 2020-2023  润新知