rver error

更新时间:2022-11-26 14:13:03 阅读: 评论:0


2022年11月26日发(作者:god is a girl)

SQLServer中RAISERROR的⽤法详细介绍

SQLServer中RAISERROR的⽤法

rairror的作⽤:rairror是⽤于抛出⼀个错误。[以下资料来源于sqlrver2005的帮助]

其语法如下:

RAISERROR({msg_id|msg_str|@local_variable}

{,verity,state}

[,argument[,...n]]

)

[WITHoption[,...n]]

简要说明⼀下:

第⼀个参数:{msg_id|msg_str|@local_variable}

msg_id:表⽰可以是⼀个es表中定义的消息代号;

使⽤sp_addmessage存储在es⽬录视图中的⽤户定义错误消息号。

⽤户定义错误消息的错误号应当⼤于50000。

msg_str:表⽰也可以是⼀个⽤户定义消息,该错误消息最长可以有2047个字符;

(如果是常量,请使⽤N'xxxx',因为是nvarchar的)

当指定msg_str时,RAISERROR将引发⼀个错误号为5000的错误消息。

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

第⼆个参数:verity

⽤户定义的与该消息关联的严重级别。(这个很重要)

任何⽤户都可以指定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@raiErrorCodenvarchar(50)

SET@raiErrorCode=CONVERT(nvarchar(50),YOURUNIQUEIDENTIFIERKEY)

RAISERROR('%snorecordintable',16,1,@raiErrorCode)

--⽰例2

RAISERROR(

N'Thisismessage%s%d.',--Messagetext,

10,--Severity,

1,--State,

N'number',--Firstargument.

5--Secondargument.

);

--Themessagetextreturnedis:Thisismessagenumber5.

GO

--⽰例3

RAISERROR(N'<<%*.*s>>',--Messagetext.

10,--Severity,

1,--State,

7,--Firstargumentudforwidth.

3,--Secondargumentudforprecision.

N'abcde');--Thirdargumentsuppliesthestring.

--Themessagetextreturnedis:<>.

GO

--⽰例4

RAISERROR(N'<<%7.3s>>',--Messagetext.

10,--Severity,

1,--State,

N'abcde');--Firstargumentsuppliesthestring.

--Themessagetextreturnedis:<>.

GO

--⽰例5

--A.从CATCH块返回错误消息

以下代码⽰例显⽰如何在TRY块中使⽤RAISERROR使执⾏跳⾄关联的CATCH块中。

它还显⽰如何使⽤RAISERROR返回有关调⽤CATCH块的错误的信息。

BEGINTRY

RAISERROR('ErrorraidinTRYblock.',--Messagetext.

16,--Severity.

1--State.

);

ENDTRY

BEGINCATCH

DECLARE@ErrorMessageNVARCHAR(4000);

DECLARE@ErrorSeverityINT;

DECLARE@ErrorStateINT;

SELECT

@ErrorMessage=ERROR_MESSAGE(),

@ErrorSeverity=ERROR_SEVERITY(),

@ErrorState=ERROR_STATE();

RAISERROR(@ErrorMessage,--Messagetext.

@ErrorSeverity,--Severity.

@ErrorState--State.

);

ENDCATCH;

--⽰例6

--B.在es中创建即席消息

以下⽰例显⽰如何引发es⽬录视图中存储的消息。

该消息通过sp_addmessage系统存储过程,以消息号50005添加到es⽬录视图中。

sp_addmessage@msgnum=50005,

@verity=10,

@msgtext=N'<<%7.3s>>';

GO

RAISERROR(50005,--Messageid.

10,--Severity,

1,--State,

N'abcde');--Firstargumentsuppliesthestring.

--Themessagetextreturnedis:<>.

GO

sp_dropmessage@msgnum=50005;

GO

--⽰例7

--C.使⽤局部变量提供消息⽂本

以下代码⽰例显⽰如何使⽤局部变量为RAISERROR语句提供消息⽂本。

sp_addmessage@msgnum=50005,

@verity=10,

@msgtext=N'<<%7.3s>>';

GO

RAISERROR(50005,--Messageid.

10,--Severity,

1,--State,

N'abcde');--Firstargumentsuppliesthestring.

--Themessagetextreturnedis:<>.

GO

sp_dropmessage@msgnum=50005;

GO

感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!

本文发布于:2022-11-26 14:13:03,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/25560.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:青云翻译
下一篇:finish的过去式
标签:server error
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图