【问题标题】:sql raiseerror error.number wrong in VBVB 中的 sql raiserror error.number 错误
【发布时间】:2010-04-29 15:50:39
【问题描述】:

我编写了一个 T-SQL 查询,其中包括对有效 EmployeeNo 的测试。如果 EmployeeNo 无效,我会执行以下操作:

RAISERROR(5005, 10, 1, N'Invalid Employee No')
return @@Error

回到VB.Net,我测试了sql异常,发现当Employee No无效时,error.number不是我期望的5005,而是2732。

对此有何解释?

谢谢。

【问题讨论】:

  • 如果您接受对您的问题给出的更多答案,您将更有可能在未来的问题上获得许多高质量的答案。您可以返回旧问题并点击最有帮助的答案旁边的勾号。
  • 谢谢你的建议,丹尼尔。
  • 5005 是 SQL Server 错误代码,您的代码中出现 .Net 框架错误 #。如果你想保留原始错误# - 在错误文本中传递它,然后在代码中解析出来

标签: sql-server tsql raiserror


【解决方案1】:

您不能在自己的代码中引发错误 5005。只有数据库引擎可以做到这一点。

错误 2732 是表示您无法引发 messages < 50000 的错误

SELECT description FROM sys.sysmessages m WHERE m.error = 2732 AND msglangid = 1033

Error number %ld is invalid. The number must be from %ld through %ld and it cannot be 50000.

【讨论】:

  • > 如果您首先使用 sp_addmessage,则为 50000。如果你做 RAISERROR ('A string'...) 那么它总是 50000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多