SQL SERVER抛出异常


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

RAISERROR(‘该客户已经分配给了(%s)’, 16, 1, @description), 在程序中通过try..catch捕捉,消息就是e.Message,前提是指定严重级别为11-19,如此时的16

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

?

msg_id
使用 sp_addmessage 存储在 sys.messages 目录视图中的用户定义错误消息号。用户定义错误消息的错误号应当大于 50000。

msg_str
用户定义消息,格式与 C 标准库中的 printf 函数类似。当指定 msg_str 时,RAISERROR 将引发一个错误号为 5000 的错误消息。因为此时用的是str,不是msg_id,sys.messages中没有存此错误信息,但这个函数功能就是抛出错误,只能由系统来提供。

severity
用户定义的与该消息关联的严重级别。当使用 msg_id 引发使用 sp_addmessage 创建的用户定义消息时,RAISERROR 上指定的严重性将覆盖 sp_addmessage 中指定的严重性。

在严重级别为 11 到 19 的情况下在 TRY 块中运行的 RAISERROR 会将控制传输至关联的 CATCH 块。指定严重级别为 10 或更低以使用 RAISERROR 返回 TRY 块中的消息,而不必调用 CATCH 块。

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

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