生成错误消息并启动会话的错误处理。 RAISERROR 可以引用 sys.messages 目录视图中存储的用户定义消息,也可以动态建立消息。 该消息作为服务器错误消息返回到调用应用程序,或返回到 TRY…CATCH 构造的关联 CATCH 块。 新应用程序应改用 THROW。

RAISERROR 生成的错误与数据库引擎代码生成的错误的运行方式相同。 RAISERROR 指定的值由 ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY、ERROR_STATE 以及 @@ERROR 等系统函数来报告。 当 RAISERROR 在严重级别为 11 或更高的情况下在 TRY 块中运行,它便会将控制传输至关联的 CATCH 块。 如果 RAISERROR 在下列情况下运行,便会将错误返回到调用方:

  • 在任何 TRY 块的作用域之外运行。

  • 在严重级别为 10 或更低的情况下在 TRY 块中运行。

  • 在严重级别为 20 或更高的情况下终止数据库连接

总结:在使用TRY 块时,严重级别应该在11之上,不高于20,会将控制传输至关联的 CATCH 块.

RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ]

severity:是与此消息关联的用户定义的严重性级别。 使用 msg_id 引发使用 sp_addmessage 创建的用户定义消息时,RAISERROR 上指定的严重性会替代 sp_addmessage 中指定的严重性。
若要使用 19 到 25 之间的严重级别,必须选择 WITH LOG 选项。 将小于 0 的严重级别解释为 0。 将大于 25 的严重级别解释为 25。

注意,这一点很关键,如果要记录日志,对应用程序的影响最大,用时要慎重。

20 到 25 之间的严重级别被认为是致命的。 如果遇到致命的严重级别,客户端连接将在收到消息后终止,并将错误记录到错误日志和应用程序日志。

State
0 到 255 之间的整数。 负值默认为 1。 不应使用大于 255 的值。

argument:参照事实自行扩充即可。


RAISERROR (N'This is message %s %d,%s.', -- Message text.  16, -- Severity,  1, -- State,  N'number', -- First argument.  5,' 我的测试'); -- Second argument.
-- The message text returned is: This is message number 5.
GO  结果:
消息 50000,级别 16,状态 1,第 10 行
This is message number 5, 我的测试.完成时间: 2022-06-22T18:37:16.4665297+08:00

RAISERROR 与 THROW 之间的差异

下表列出了 RAISERROR 和 THROW 语句之间的一些差异。

RAISERROR 语句 THROW 语句
如果将 msg_id 传递给 RAISERROR,则必须在 sys.messages 中定义 ID 。 无需在 sys.messages 中定义 error_number 参数 。
msg_str 参数可以包含 printf 格式设置样式 。 message 参数不接受 printf 样式的格式设置 。
severity 参数指定异常的严重性 。 没有 severity 参数 。 当 THROW 被用来发起异常时,严重性始终设置为 16。 但是,当 THROW 用于重新引发一个现有异常时,严重性被设置为该异常的严重级别。
不遵循 SET XACT_ABORT。 如果 SET XACT_ABORT 为 ON,则会回滚事务。

MSSQL RAISERROR相关推荐

  1. java加载驱动没有异常显示_java – Tomcat没有加载MSSQL驱动程序

    我正在尝试将我的webapp部署到Tomcat容器,但是我得到一个例外,说明找不到我的数据库的驱动程序.在本地我测试Jetty上的应用程序,驱动程序jar由Maven提供.我将驱动程序jar复制到To ...

  2. sqlmap使用_sqlmap从入门到精通第四章47使用EW代理导出和导入MSSQL数据

    4.7 使用EW代理导出和导入MSSQL数据 一般的场景就是目标站点获取了webshell,然后数据库的IP地址不在目标站的本地,而且做了精准的访问控制,只允许目标站点的IP地址才能访问数据库,那么这 ...

  3. mssql mysql 语法区别_mssql与mysql区别之——变量区别

    sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的): 申明局部变量语法:declare @变量名 数据类型:例如:declare ...

  4. 使用XML在MSSQL把字串分解

    今天要在mssql里处理一串Email地址.以分号分开的.以前自己写过一个split函数的.这次想使用xml来处理. mssql 2000和mssql 2005数据库对xml的支持有些不同.至少mss ...

  5. mysql中leave和_MySQL数据库之Mysql存储过程使用LEAVE实现MSSQL存储过程中return语法

    本文主要向大家介绍了MySQL数据库之Mysql存储过程使用LEAVE实现MSSQL存储过程中return语法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. DELIMITER ...

  6. ibaits插入即获取主键(mssql,mysql,oracle)

    oracle主键需预先生成,通过sequence:mysql和mssql是插入后生成. mysql: <insert id="insertStu_mysql" paramet ...

  7. MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限...

    查看数据库的表的时候报如下错误: MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELEC ...

  8. Python 连接Sql Server数据库 MSSql

    Python 想要和MSSql数据库进行交互,首先要下载名为"pymssql"的包,然后import该包即可. 地址:https://pypi.python.org/pypi/py ...

  9. docker 启动sqlserver_在Docker上安装MSSQL(SQL Server)

    在转移到Mac OS X 阵营之后,如果想在本机上安装微软的mssql-server数据库有三种方式: 第一种是在本机上安装MSSQL for Linux 版本. 第二种是安装Windows虚拟机,然 ...

最新文章

  1. Centos6.3下rsync+sersync安装配置笔记
  2. WIN32 窗口枚举和操作
  3. fatal error C1071: unexpected end of file found in comment
  4. SAPSQL_IN_ITAB_ILLEGAL_OPTION dump
  5. 涨薪关键之反射机制,引得项目经理对你的看重,加薪触手可及!!!!
  6. QML学习【一】Basic Types
  7. 时间操作(Java版)—将毫秒转换为年月日时分秒
  8. 使用一重循环打印乘法口诀
  9. 摩托罗拉mpkg安装签名方法研究
  10. ps6人脸识别液化工具在哪_Photoshop教学:人脸识别液化功能介绍
  11. 大学生计算机学科竞赛a类,全国大学生学科竞赛分类名单
  12. 谷歌翻译SDK (Google Translate SDK)的使用
  13. 连上手机就能偷你信息?一定要注意你身边的共享充电宝。
  14. 白鹭(egret)工具集介绍一
  15. 实现系统滚动条换肤功能
  16. Linux查看硬盘信息方法总结
  17. 差钱吗?周杰伦线上演唱会没关打赏惹争议,看看同时直播的腾格尔
  18. 2021年中国动力电池行业发展现状分析,需求推动行业多元化发展「图」
  19. 基于STM32F103的简易示波器设计
  20. 计算机网络 王道考研2021 第三章:数据链路层 -- 局域网基本概念和体系结构、以太网(一种常用的局域网技术)、无线局域网、跨省短信通知原因、MAC

热门文章

  1. (附源码)springboot健康饮食小程序 毕业设计280920
  2. ABAP 关键字:SPLIT
  3. 使用JUC下的CountDownLatch异步批量处理数据
  4. Web前端开发精品课HTML CSS JavaScript基础教程CSS部分知识点总结
  5. CSS基础笔记——超链接样式
  6. Native App 不再首选
  7. 北京网信办约谈微博;阿里股价突破200美元;戴尔寻求重新上市丨价值早报
  8. MySQL数据库学习(二) MySQL数据库课后练习(1) DDL与DML练习
  9. Code vs 1391 伊吹萃香(虫洞)
  10. 《攻守道》笔记(1)