mysql raiserror_RAISERROR在SQL Server数据库中的用法

mysql raiserror_RAISERROR在SQL Server数据库中的用法raiserror 是由单词 raiseerror 组成 raise 增加 提高 提升 raiserror 的作用 raiserror 是用于抛出一个错误 以下资料来源于 sqlserver200 的帮助 其语法如下 复制代码 RAISERROR msg id msg str local variable severity state argume

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)

–示例2RAISERROR (

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

–示例3RAISERROR (N’<>‘, — 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: <>.

GO

–示例4RAISERROR (N’<>‘, — Message text.

10,           — Severity,

1,            — State,

N’abcde’);    — First argument supplies the string.

— The message text returned is: <>.

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’<>‘;

GO

RAISERROR (50005, — Message id.

10,    — Severity,

1,     — State,

N’abcde’); — First argument supplies the string.

— The message text returned is: <>.

GO

sp_dropmessage @msgnum = 50005;

GO

–示例7

–C. 使用局部变量提供消息文本

以下代码示例显示如何使用局部变量为 RAISERROR 语句提供消息文本。sp_addmessage @msgnum = 50005,

@severity = 10,

@msgtext = N’<>‘;

GO

RAISERROR (50005, — Message id.

10,    — Severity,

1,     — State,

N’abcde’); — First argument supplies the string.

— The message text returned is: <>.

GO

sp_dropmessage @msgnum = 50005;

GO

本文由职坐标整理并发布,希望对同学们学习RAISERROR在SQL Server数据库中的用法有所帮助。

了解更多详情请关注职坐标QL Server数据库频道!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221354.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:19
下一篇 2026年3月17日 下午6:19


相关推荐

  • 判断全角字符oracle,oracle判断汉字和全角字符的方法

    判断全角字符oracle,oracle判断汉字和全角字符的方法最近由于单位提了一个需求 要判断提供的用户名称里不有全角字符 至少有两个汉字 找了半天 想通过正则表达式来解决 但测试了好久才发现 oracle 的正则函数 REGEXP LIKE 不支持 un 匹配 n 其中 n 是以四位十六进制数表示的 Unicode 字符 的判断 例如 最近由于单位提了一个需求 要判断提供的用户名称里不有全角字符 至少有两个汉字 找了半天 想通过正则表达式来解决 但测试了好久才

    2026年3月18日
    2
  • 字符串索引越界_字符串的索引和切片

    字符串索引越界_字符串的索引和切片先贴出测试代码:publicclassTestStringIndex{ publicstaticvoidmain(String[]args){ Stringtest=”woshifoucengjilaiguo”; System.out.println(test.length()); chari=test.charAt(21); System.ou

    2025年6月14日
    3
  • jsp中使用My97日期控件报 “IE中 无法打开internet站点 。。。。。已终止操作” 的解决办法

    jsp中使用My97日期控件报 “IE中 无法打开internet站点 。。。。。已终止操作” 的解决办法除了使用4.5以上版本外,将 “>加在my97的js文件引用的后面 “>

    2022年5月29日
    33
  • msdos分区是什么_msdos_partition

    msdos分区是什么_msdos_partition硬盘分区及格式化本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘/dev/vdb上按以下要求建立分区:采用默认的msdos分区模式1、第1个分区/dev/vdb1的大小为200MiB2、第2个分区/dev/vdb2的大小为2000MiB3、第3个分区/dev/vdb3的大小为1000MiB,完成分区后4、能够配置开机自动挂载/dev/vdb2分区…

    2022年8月11日
    10
  • linux内核模块加载命令

    linux内核模块加载命令1、lsmod列加以挂载的内核模块;lsmod是列出目前系统中已加载的模块的名称及大小等;另外我们还可以查看/proc/modules,我们一样可以知道系统已经加载的模块;[root@localhostbeinan]#lsmod2、modinfo查看模块信息;modinfo可以查看模块的信息,通过查看模块信息来判定这个模块的用途;[root@localhostbeinan]#moinfo模块名举例:查看br_netfilter模块[root@ct~]#m

    2022年7月23日
    29
  • matlab中wavedec2,说说wavedec2函数[通俗易懂]

    matlab中wavedec2,说说wavedec2函数[通俗易懂]wavedec2函数:1.功能:实现图像(即二维信号)的多层分解.多层,即多尺度.2.格式:[c,s]=wavedec2(X,N,’wname’)[c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)3.参数说明:对图像X用wname小波基函数实现N层分解,这里的小波基函数应该根据实际情况选择,具体选择办法可以搜之.输出为c,s.c为各层分解系数,s为各层分解系数长度,也就是大小…

    2022年6月15日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号