SQL 中 RAISERROR 的用法

raiserror  是由单词 raise error 组成
     raise  增加; 提高; 提升


raiserror 的作用 : raiserror 是用于抛出一个错误。[ 以下资料来源于sql server 2005的帮助 ]

其语法如下:

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

简要说明一下:

第一个参数 :{ 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;
 
 
[SQL]代码示例

--示例1
DECLARE   @raiseErrorCode   nvarchar ( 50 )
SET   @raiseErrorCode   =   CONVERT ( nvarchar ( 50 ), YOUR  UNIQUEIDENTIFIER   KEY )
RAISERROR ( ' %s INVALID ID. There is no record in table ' , 16 , 1 @raiseErrorCode )

 

--示例2
复制代码
RAISERROR  (
             N
' This is message %s %d. ' --  Message text,
              10 ,                         --  Severity,
              1 ,                          --  State,
             N ' number ' ,                  --  First argument.
              5                            --  Second argument.
          ); 
--  The message text returned is: This is message number 5.
GO
复制代码


--示例3
复制代码
RAISERROR  (N ' <<%*.*s>> ' --  Message text.
            10 ,            --  Severity,
            1 ,             --  State,
            7 ,             --  First argument used for width.
            3 ,             --  Second argument used for precision.
           N ' abcde ' );     --  Third argument supplies the string.
--
 The message text returned is: <<    abc>>.
GO
复制代码


--示例4
RAISERROR  (N ' <<%7.3s>> ' --  Message text.
            10 ,            --  Severity,
            1 ,             --  State,
           N ' abcde ' );     --  First argument supplies the string.
--
 The message text returned is: <<    abc>>.
GO


--示例5    

--A. 从 CATCH 块返回错误消息
以下代码示例显示如何在 TRY 块中使用 RAISERROR 使执行跳至关联的 CATCH 块中。
它还显示如何使用 RAISERROR 返回有关调用 CATCH 块的错误的信息。

复制代码
BEGIN  TRY
    
RAISERROR  ( ' Error raised in TRY block. ' --  Message text.
                 16 --  Severity.
                 1   --  State.
               );
END  TRY
BEGIN  CATCH
    
DECLARE   @ErrorMessage   NVARCHAR ( 4000 );
    
DECLARE   @ErrorSeverity   INT ;
    
DECLARE   @ErrorState   INT ;

    
SELECT  
        
@ErrorMessage   =  ERROR_MESSAGE(),
        
@ErrorSeverity   =  ERROR_SEVERITY(),
        
@ErrorState   =  ERROR_STATE();

    
RAISERROR  ( @ErrorMessage ,   --  Message text.
                @ErrorSeverity --  Severity.
                @ErrorState       --  State.
               );
END  CATCH;
复制代码


--示例6

--B. 在 sys.messages 中创建即席消息
以下示例显示如何引发 sys.messages 目录视图中存储的消息。
该消息通过 sp_addmessage 系统存储过程,以消息号50005添加到 sys.messages 目录视图中。

复制代码
sp_addmessage  @msgnum   =   50005 ,
               
@severity   =   10 ,
               
@msgtext   =  N ' <<%7.3s>> ' ;
GO

RAISERROR  ( 50005 --  Message id.
            10 ,     --  Severity,
            1 ,      --  State,
           N ' abcde ' );  --  First argument supplies the string.
--
 The message text returned is: <<    abc>>.
GO

sp_dropmessage 
@msgnum   =   50005 ;
GO
复制代码


--示例7
--C. 使用局部变量提供消息文本
以下代码示例显示如何使用局部变量为 RAISERROR 语句提供消息文本。
复制代码
sp_addmessage  @msgnum   =   50005 ,
              
@severity   =   10 ,
              
@msgtext   =  N ' <<%7.3s>> ' ;
GO

RAISERROR  ( 50005 --  Message id.
            10 ,     --  Severity,
            1 ,      --  State,
           N ' abcde ' );  --  First argument supplies the string.
--
 The message text returned is: <<    abc>>.
GO

sp_dropmessage 
@msgnum   =   50005 ;
GO
复制代码



参考来源:

http://msdn.microsoft.com/zh-cn/library/ms178592.aspx

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/483588bd-021b-4eae-b4ee-216268003e79.htm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350776.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

raiserror的用法

描述&#xff1a;raiserror &#xff1a;是用于抛出一个错误 第一个参数&#xff1a;{ msg_id | msg_str | local_variable } msg_id&#xff1a;表示可以是一个sys.messages表中定义的消息代号&#xff1b; 使用 sp_addmessage 存储在 sys.messages 目录视图中的用户定义错误消…

SQL Server抛出异常信息 RAISERROR

用于数据库抛出具体异常信息给程序&#xff0c;示例&#xff1a;BEGIN TRY /* RAISERROR (Error raised in TRY block., -- Message text. 16, -- Severity. 1 -- State. ); */ DECLARE x INT9; DECLARE y INT 0; SELEC…

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

【摘要】 移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这…

秒懂SQL SERVERE 数据库中RAISERROR的基本用法

基本用法 raiserror(msg,severity,state)一、msg 错误信息。 二、severity 错误信息的级别&#xff0c;我们可以指定 0 到 18 之间的严重级别。 只有 sysadmin 固定服务器角色成员或具有 ALTER TRACE 权限的用户才能指定 19 到 25 之间的严重级别。若要使用 19 到 25 之间的严…

SQL Server研习录(23)——RAISERROR()函数

SQL Server研习录&#xff08;23&#xff09;——RAISERROR函数 版权声明一、RAISERROR()函数1、基本语法 版权声明 本文原创作者&#xff1a;清风不渡博客地址&#xff1a;https://blog.csdn.net/WXKKang 一、RAISERROR()函数 概念&#xff1a;生成错误消息并启动会话的错误处…

python 创建Django项目基础

一. 安装Django pip install django 默认安装最新版本二. 创建一个Django项目 三、运行项目 创建好Django项目后&#xff0c;我们就可以运行了 使用命令 python manage.py runserver四、目录结构 五、创建一个文件views用来存放方法 在创建的文件中写入以下方法 def sa…

[5]PCB设计实验|卷积神经网络基础|零基础入门深度学习(4) 卷积神经网络|14:00~14:55

资料来源&#xff1a;零基础入门深度学习(4) - 卷积神经网络 - 作业部落 Cmd Markdown 编辑阅读器 目录 1. Relu激活函数 2. 全连接网络VS卷积网络 3. 卷积神经网络 3.1 网络架构 3.2 三维的层结构 4. 卷积神经网络输出值的计算 5. Pooling层输出值的计算 6. 全连…

WebGIS学习-01-GIS基础概念与Mapbox基础

1.地图数据来源 1.栅格数据&#xff1a; -.jpg&#xff0c;.png等图片数据&#xff1b; -卫星等拍摄的影像&#xff1b;.tiff 2.矢量数据&#xff1a; -geojson的数据&#xff0c;多用于绘制边界 -放大缩小都不会失真&#xff0c;且高度支持手绘 2.网页是如何渲染地图数据的 …

【Log】大三的最后一个项目,所以我到底是不是恋爱脑?

文章目录 梦开始的地方核心功能恋爱相册&#xff08;LoveAlbum&#xff09;恋爱日志&#xff08;LoveLogs&#xff09;爱情邮局&#xff08;LovePostOffice&#xff09;时间线&#xff08;TimeLine&#xff09;待办列表&#xff08;LoveList&#xff09; 技术栈 梦开始的地方 …

Web端3D模型轻量化工具如何实现建筑行业“数字化”建设?

随着数字化技术的飞速发展&#xff0c;建筑行业也在不断寻找新的技术手段来提供高产能和建筑质量。其中&#xff0c;Web端3D模型轻量化工具HOOPS Communicator SDK在建筑行业中的应用不断地得到了市场的广泛注意和应用。本文将深入探讨HOOPS Communicator在建筑行业中的应用及其…

初心不改凌云志 热血浇灌信仰花 《凭栏一片风云起》湖北卫视热力开播

浮光灼夏 御风而行&#xff0c; 由著名导演金琛执导&#xff0c; 胡一天、章若楠、王劲松 张晞临、张赫、林子璐领衔主演&#xff0c; 高伟光特邀出演的 年代战争剧《凭栏一片风云起》&#xff0c; 将于今晚19:30起&#xff0c; 登陆【湖北卫视】长江剧场。 电视剧《凭栏…

C++之stack容器

一、概念 概念: stack是一种先进后出(First In Last Out,FILO)的数据结构&#xff0c;它只有一个出口&#xff1b; 二、代码 #include <iostream> #include <stack>using namespace std;// 栈数据操作 概念: stack是一种先进后出(First In Last Out,FILO)的数据结…

SqlTransaction——事务详解

Posted on 2008-07-20 01:46 停留的风 http://www.cnblogs.com/yank/archive/2008/07/20/1246896.html 事务处理基本原理 事务是将一系列操作作为一个单元执行&#xff0c;要么成功&#xff0c;要么失败&#xff0c;回滚到最初状态。在事务处理术语中&#xff0c;…

sql server 2005 T-SQL BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)

指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始。 Transact-SQL 语法约定 语法 BEGIN DISTRIBUTED { TRAN | TRANSACTION } [ transaction_name | tran_name_variable ] [ ; ] 参数 transaction_name 用户定义的事务名&#x…

编写Transact-SQL语句

适用于&#xff1a; SQL Server Azure SQL数据库Azure Synapse Analytics&#xff08;SQL DW&#xff09;并行数据仓库 欢迎使用《编写Transact-SQL语句》教程。本教程适用于刚编写SQL语句的用户。通过检查一些有关创建表和插入数据的基本语句&#xff0c;它将帮助新用户开始…

SQL transaction事物以及各种锁、waitfor、脏读、幻读

事务定义 数据库事务(Database Transaction)&#xff0c;是指作为单个逻辑工作单元执行的一系列操作&#xff0c;要么完全地执行&#xff0c;要么完全地不执行。 简单的说&#xff1a;事务就是将一堆的SQL语句(通常是增删改操作)绑定在一起执行&#xff0c;要么都执行成功&am…

SQL 之 事务(Transaction)

SQL 之 事务 一、什么是事务&#xff1f;二、事务的四大特性(ACID)1. 原子性(Atomicity)2. 一致性(Consistency)3. 隔离性(Isolation)4. 持久性(Durability) 三、并发事务带来的问题1. 脏读(Dirty read)2. 修改丢失(Lost to modify)3. 不可重复读(Unrepeatableread)4. 幻读(Pha…

004-从零搭建微服务-认证中心(四)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 搭建前端框架 感谢开源项目【vue-next-adm…

5年软件测试工程师工作感悟,谁还能“点点点”一辈子呢?

经常都有人问我软件测试前景怎么样&#xff0c;每年也都帮助很多朋友做职业分析和学习规划&#xff0c;也很欣慰能够通过自己的努力帮到一些人进入到大厂。 2023年软件测试行业的发展现状以及未来的前景趋势 最近很多测试人在找工作的时候&#xff0c;明显的会发现功能测试很…

【深入浅出 Spring Security(六)】一文搞懂密码的加密和比对

Spring Security 中的密码加密 一、PasswordEncoder 详解常见的实现类&#xff08;了解&#xff09;DelegatingPasswordEncoder源码分析DelegatingPasswordEncoder 在哪实例化的&#xff1f; 二、自定义加密自定义方式一&#xff1a;使用{id}的形式自定义方式二&#xff1a;向S…