T-SQL 中的 RaiseError 命令

Posted

技术标签:

【中文标题】T-SQL 中的 RaiseError 命令【英文标题】:RaiseError Command in T-SQL 【发布时间】:2014-07-13 05:00:30 【问题描述】:

所以我今天早些时候试图输入RaisError声明,结果不小心输入如下:

RaiseError ('Some error message', 16, -1)

注意多余的 e。

当然,它抛出了一个错误,因为它本来应该是 RaisError,但让我措手不及的是,在 SSMS 2012 中,RaiseError 是语法突出显示的粉红色,就好像它是一个系统函数一样.所以当我写它的时候,我没有注意到我添加了一个额外的 e,直到我尝试运行它。

这让我想知道RaiseError 的用途。我访问了 MSDN 和 Google,试图找到一些关于 RaiseError 的信息或文档,但我找不到任何暗示它存在的东西。我发现的所有内容都提到了RaisError

RaiseError 的用途是什么,它是如何使用的?这甚至是一件事吗?是我的 Google 技能让我失望了,还是这只是 SSMS 中的一个错误,使本已令人困惑的命名约定更加混乱?

【问题讨论】:

SSMS 中的颜色语法高亮不完善。在这种情况下,识别粉色与蓝色可能与您将获得的一样好 - 我认为您永远不会从 Microsoft 那里得到关于为什么它应该形式的术语的答案> 已拼写为突出显示的粉红色,没关系期望看到它已修复。 可以理解,但这是否意味着RaiseError 本身实际上并不是一个函数? 是的,我不认为这是一个函数。 找到了一些相关的东西dba.stackexchange.com/a/22661 【参考方案1】:

RaiseError 在 SQL 2008 中被贬低,在 2012 年不再使用。 RaiseError 是 RaisError 的旧格式,不带“()”

以下文章在此提及:Microsoft Article

Transact-SQL RAISERROR(格式:RAISERROR 整数字符串)语法 已弃用。使用当前的 RAISERROR 重写语句 句法。旧式 RAISEERROR 164

【讨论】:

我实际上认为这是文档中的错字。具有讽刺意味的是。 是的,我认为这个答案不正确。我刚刚在 SQL Server 2005 中尝试了 RAISEERROR(带有两个“E”),但它不起作用。 对,它在 2000 年也不起作用 - 我证明了这一点,然后发布了一个带有语法错误的屏幕截图,然后关闭了运行 2000 的 VM。我可以向你保证,这只是文档中的一个错字。

以上是关于T-SQL 中的 RaiseError 命令的主要内容,如果未能解决你的问题,请参考以下文章

Rollback 和 Raiseerror,哪个先?

T-SQL语句

如何使用 RAISEERROR 语句?

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

SQL Server Try/Catch、Begin/Tran、RaiseError、Loop 和 Return。正确的顺序是啥?