为什么sql在引发错误后执行语句



我已经编写了这段代码。问题是,在引发错误后,它仍然命中并在引发错误的地方执行代码。

开始尝试开始事务

Declare @Days int
Set @Days= (Select Days from Days where IsActive=1)
declare @Message varchar(100)
Set @Message= 'The difference between current date and expiry date must be equal or greater than '+ Convert(varchar,@Days)
if(datediff(dd, GETDATE(), convert(date,dbo.Func_Base64Decode(@ExpiryDate))) >= @Days)
Begin
Set @ErrorMsgType= 0
End
Else
Begin
Set @ErrorMsgType= 2
Raiserror(@Message, 16,10);
return
End
//Some insertion code after it.

commit transaction
End Try

捕获块中:

Begin Catch

if(@ErrorMsgType = 1)
Begin
Raiserror('Opening time cannot be smaller than expiry time', 16,10);
End
Else
Begin
Set @Message= (Select ERROR_MESSAGE())
Raiserror(@Message, 16,10);
End
RollBack Transaction
End Catch

为什么?

Return 

成功了。在RAISERROR之后放回球就成功了。

相关内容

  • 没有找到相关文章

最新更新