![]() |
1
13
以下文章是SQL Server MVP Erland Sommarskog必须阅读的: Implementing Error Handling with Stored Procedures 还要注意 Your TRY block may fail, and your CATCH block may be bypassed 还有一件事:使用旧式错误处理和保存点的存储过程在与Try__catch块一起使用时可能无法按预期工作。 Avoid mixing old and new styles of error handling. |
![]() |
2
8
尝试/捕捉更多陷阱。它非常好,令人惊奇。
在触发器中使用try/catch也可以。触发器回滚也曾是批处理中止:如果触发器中也使用了try/catch,则不再使用。 如果begin/rollback/commit位于构造的内部而不是外部,则示例会更好。 |
![]() |
3
5
尝试捕获不会捕获所有内容 下面是一些代码来证明这一点
服务器:msg 3930,级别16,状态1,第9行 无法提交当前事务,并且无法支持写入日志文件的操作。回滚事务。 服务器:msg 3998,级别16,状态1,行1 在批处理结束时检测到不可提交的事务。事务回滚。 |
![]() |
4
0
|
![]() |
5
0
根据我的经验,根据联机丛书,Try…Catch块将捕获所有会生成错误的事件(因此,将@@Error设置为非零值)。我想在任何情况下这都不适用。所以不,返回值永远不会设置为1111,并且不值得包括@@error check。 但是,错误处理可能非常关键,我会对一些边缘情况(如DTC、链接服务器、通知或经纪服务以及其他我几乎没有经验的SQL功能)进行对冲。如果可以的话,测试一下你更奇怪的情况,看看会发生什么。 |
![]() |
6
0
“try..catch”的关键是不必为每个语句检查@@error。 所以这是不值得的。 |
![]() |
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
Java · 使用交叉应用同时显示两列 2 年前 |