我必须在不同位置使用不同的消息进行RAISERRORS。
即
Begin Try
if(Convert(time,@OpeningTime) < convert(time,@ExpiryTime))
Begin;
Raiserror('Opening time cannot be smaller than expiry time', 16,10);
End
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, @ExpiryDate, GETDATE()) > @Days)
Begin
Raiserror(@Message, 16,10);
End
End Try
Begin Catch
Raiserror('Opening time cannot be smaller than expiry time', 16,10);
End Catch
现在的问题是,在每种情况下我都必须在catch块中返回不同的消息,而不是静态文本,例如它应该显示我已经提出的错误
答案 0 :(得分:1)
使用ERROR_MESSAGE()
功能
https://docs.microsoft.com/en-us/sql/t-sql/functions/error-message-transact-sql
结果:
Begin Catch
Raiserror(ERROR_MESSAGE(), 16,10);
End Catch
答案 1 :(得分:1)
只需在catch块中使用THROW;
重新抛出引发的错误:
BEGIN CATCH
THROW;
END CATCH;