在 CATCH 块中经常提到的 THROW 的好处是它返回发生错误的正确行号。我注意到只有当我使用没有任何变量的 THROW 时它才会这样做。使用下面的格式,我自己的错误号和消息返回 THROW 本身的行号(就像 RAISERROR 一样)。
THROW 50055, 'my message', 1;
Run Code Online (Sandbox Code Playgroud)
这是意料之中的一个已知缺陷还是我做错了什么?
我正在使用 SQL Server 2017 CU20。
这是意料之中的一个已知缺陷还是我做错了什么?
是的,这是预期的行为。您生成了一条新的错误消息,它源自 的调用站点THROW ...
。这就是为什么您应该只支持THROW;
或者您需要将所有相关的错误上下文信息封装在您的消息中的原因。
归档时间: |
|
查看次数: |
237 次 |
最近记录: |