我正在开发一个大型 SQL Server 代码库,其中一些代码库至少从 SQL 7 甚至更早的版本就开始开发了。
在整个代码库中,引发错误的方法是使用以下语法,据我所知,该语法未记录
RAISERROR <error number> <error message>
The error number
可以是大于 13000 的任意值;中不需要存在相应的条目sys.messages
桌子。这error message
也可以是任意的。
以下示例代码
raiserror 13000 'test error'
产生以下输出
Msg 13000, Level 16, State 1, Line 1
test error
这种行为在 SQL 2000、2005 和 2008 中是相同的(我没有测试过 2008 R2)。
我们将尝试标准化受支持的方法,但我的问题是这种行为最初来自哪里。
我认为这一定曾经被记录在案、受支持的行为,但是很难找到 SQL 7 及之前版本的在线书籍副本。有谁知道它何时被支持或何时被弃用(如果有的话)?
Edit为了澄清,根据文档 http://msdn.microsoft.com/en-us/library/ms178592.aspx,支持的RAISERROR
语法是
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
以及任何未定义的用户错误号sys.messages
应引发错误消息 ID 50000