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 会生成错误。
如果在多个位置引发相同的用户定义错误,则针对每个位置使用唯一的状态号有助于找到引发错误的代码段