THROW vs. RAISERROR

时间:2014-06-10 13:08:55

标签: sql-server sql-server-2008-r2

我正在尝试执行以下代码:

THROW 51051, 'I come from the THROW construct :)', 1 ;

我得到的错误是:

Could not find stored procedure 'THROW'.

THROW程序不是一个系统程序吗?为什么不能找到它?

此外,unsing THROWErrorState之间的区别是什么?是一个比另一个更老/更新/更好? 什么" ErrorSeverity"和" ErrorState"是ErrorState的意思?我可以按照自己的意愿定义它们,还是预定义它们?

2 个答案:

答案 0 :(得分:10)

阅读以下内容:Differences Between RAISERROR and THROW in Sql Server


RAISERROR THROW 语句都用于在 Sql Server 中引发错误。 RAISERROR 的旅程从 Sql Server 7.0 开始,其中 THROW 语句的旅程刚刚从 Sql Server 2012开始 STRONG>。显然,微软建议我们开始使用THROW语句而不是RAISERROR。 THROW 声明似乎比 RAISERROR 简单易用。

答案 1 :(得分:6)

是的,但是only since 2012。如果您使用的是2008R2,那么它就不存在了。

状态和严重性的定义清楚地记录在raiserror文档