【发布时间】:2019-03-18 09:46:54
【问题描述】:
如果我在事务中有这个块:
Begin Try
Begin Transaction tran
Declare @ExpiryDate varchar(100)
Set @ExpiryDate= (Select NewExpiryDate from NIT n where n.NITNo= @NitNo)
IF(CONVERT(DATE,@ExpiryDate)) < convert(date,getdate())
Begin
RAISERROR('error occurred', 16,1);
return;
End
Commit Transaction tran
End Try
Begin Catch
select ERROR_MESSAGE()
Rollback transaction tran1
End Catch
...它到达了 catch 块,但永远不会引发错误。它从不抛出错误。为什么?
【问题讨论】:
-
如果
try块中有错误并且catch块被执行,那么为什么它会RaIsError?该语句不在catch块中。旁白:看起来你也在使用nested transactions。它们的行为可能与您的预期不同。
标签: sql tsql stored-procedures sql-server-2012 subquery