SQL Server 2005 TRY CATCH 中的异常不能捕获导致事务无法提交

SQLServer帮助中:Transact-SQL 中使用 TRY...CATCH 说明: 编译错误和语句级重新编译错误  TRY...CATCH 将不处理


什么是:编译错误和语句级重新编译错误?例如:

  begin tran
  begin try
    update TableName
    set    ....
    from   TableName
    where  ......
    
  end try
  begin catch
    if (@@TranCount > 0)
      rollback tran
    set @ErrMessage = ERROR_MESSAGE()  
    return(1)
  end catch


  if (@@TranCount > 0)
    commit tran	

 TableName  不存在 就是编译错误和语句级重新编译错误。

同时:RETURN_VALUE 将返回 0

如果你像我这样使用控制RETURN_VALUE 值来判定stored procedure 是否正确的执行完了,那么你将发现try catch 好像是失效了,但返回值又是说明stored procedure 正确的执行完了。

另外严重的问题是事务不会被提交导致数据库被锁住。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值