为什么不RAISERROR
拼写RAISEERROR
?第二个E在哪里?我可以理解这是否是一些古老的关键字长度限制,但我不希望它是9个字符的限制。
RAIS或RROR是一个技术性词汇,使“ raise-error”只是一种误读吗?(直接的)起源是否使用不同的语言?
我已经搜索过Google,但是在该主题上找不到太多。
为什么不RAISERROR
拼写RAISEERROR
?第二个E在哪里?我可以理解这是否是一些古老的关键字长度限制,但我不希望它是9个字符的限制。
RAIS或RROR是一个技术性词汇,使“ raise-error”只是一种误读吗?(直接的)起源是否使用不同的语言?
我已经搜索过Google,但是在该主题上找不到太多。
Answers:
我有一个相同的问题,这就是为什么我偶然发现这篇文章。从我可以看出,实际上是有区别的,并且拼写并不是这两种情况之间唯一的区别。由于用法,这两个功能不相同。
链接和颜色
应归功于信誉–用户Sahuagin已经在上述问题下的注释中提出了颜色观察。
您正在使用SQL Server 2012吗?
在继续之前,我认为可以断言,如果您使用的是SQL Server 2012或更高版本,请不要使用RAISERRROR!您应该使用THROW。
那有什么区别呢?
您可以在单个内联语句中使用RAISERROR(蓝色),而不是使用RAISEERROR(品红色),后者取决于是否包含在不同的代码块中;根据返回的错误。确切的语法错误如下:
“ RAISEERROR”附近的语法不正确。期望进行对话,对话,分配或交易。
RAISERROR示例(一个E-蓝色)
DECLARE @foo varchar(200)
SET @foo = ''
IF NULLIF(@foo, '') IS NULL
BEGIN
-- To fix this line, remove one "E" to read RAISERROR
RAISEERROR('Not enough Vespene Gas!', 16, 1);
RETURN -- This is required otherwise execution will continue!
END
-- You need the RETURN above or this will execute
SELECT Critical_TSqlLine = 1;
现在,如果您仅从上面的代码中删除一个“ E”,那将正常工作。我没有提供执行结果,但是如果您打开SSMS并将其放入并执行,我保证它会工作。
RAISEERROR示例(两个E-洋红色)
我花了太多时间试图弄清楚如何使用此版本的函数,但我无法提供一个实际可行的示例。我研究了使用CONVERSATION,DIALOG,DISTRIBUTED或TRANSACTION的方式,但无法使用该语法。长话短说,不用担心这个版本,只使用单个E版本。对于那些使用SQL Server 2012的人来说,这不再是您的烦恼。
E
版本实际上不是东西。您只是由于使用标识符文字语法而没有该名称的对象(例如,表)而触发了编译错误……
E
版本不存在。
为什么还存在TIMESTAMP
数据类型?支持旧版本。Sybase的某个人很久以前就决定将其设置为RAISERROR而不是RAISEERROR,当Microsoft与Sybase达成协议时,他们继续保持这种趋势。
RAISERROR
我做不到RAISEERROR
!
RAISEERROR
粉红色和RAISERROR
蓝色。