Ask*_* B. 10 sql t-sql sql-server raiserror sql-server-2016
MSDN声明以下语法:
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
Run Code Online (Sandbox Code Playgroud)
在msg_str
预计一个字符串,最多2047个字符,但截断长字符串.它还可以替换参数,这会截断消息,而不是值提供的字符数:
错误消息最多可包含2,047个字符.如果消息包含2,048个或更多字符,则仅显示前2,044个字符,并添加省略号以指示消息已被截断.请注意,由于内部存储行为,替换参数消耗的字符数多于输出显示的字符数.例如,%d的替换参数(指定值为2)实际上会在消息字符串中生成一个字符,但内部还会占用另外三个存储字符.此存储要求会减少消息输出的可用字符数.指定msg_str时,RAISERROR会引发错误消息,错误编号为50000.
在severity
预计25 0之间的数字,但更正其他号码:
任何用户都可以指定从0到18的严重级别.从19到25的严重级别只能由sysadmin固定服务器角色的成员或具有ALTER TRACE权限的用户指定.对于从19到25的严重性级别,需要WITH LOG选项.严重级别小于0将被解释为0.严重级别大于25将被解释为25.
的state
预计值0到255,但校正零度以下的值:
[state]是0到255之间的整数.负值默认为1.不应使用大于255的值.
运行这些查询时出现以下错误:
RAISEERROR('Test', 20, 1);
Run Code Online (Sandbox Code Playgroud)
Msg 102,Level 15,State 1,Line 1
'Test'附近的语法不正确.
DECLARE @err_message nvarchar(255);
SET @err_message = 'Test';
RAISEERROR(@err_message, 20, 1);
Run Code Online (Sandbox Code Playgroud)
Msg 102,Level 15,State 1,Line 3
'RAISEERROR'附近的语法不正确.
我可以很好地执行各种其他查询.例如:
THROW 50001, 'Test', 1;
Run Code Online (Sandbox Code Playgroud)
Msg 50001,Level 16,State 1,Line 1
测试
SELECT @@VERSION
产生这个:
Microsoft SQL Server 2016(RTM-GDR)(KB3194716) - 13.0.1722.0(X64)2016年9月26日13:17:23版权所有(c)Windows 8.1 Pro 6.3上的Microsoft Corporation Express Edition(64位)(Build 9600:)
MSDN语法适用于" SQL Server(从2008开始) ",截至撰写时,文章已更新October 19, 2016
,这是我运行的SQL Server版本发布后的几个月.
这里发生了什么?
Aak*_*shM 29
文档:
MSDN声明以下语法:
RAISERROR
你的命令:
RAIS E ERROR('测试',20,1 );
我总是犯这个错误.该命令不是"提升错误",而是"Rais错误".我不知道为什么,但我们坚持下去......