您可以使用TRY CATCH 块来处理错误。一般可以使用以下模板:
BEGIN TRY
BEGIN TRANSACTION;
-- CODE BLOCK GOES HERE
COMMIT TRANSACTION;
END TRY
BEGIN CATCH;
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END;
-- GET ERRORS DETAILS OR THROW ERROR
END CATCH;
如果您没有使用TRANSACTION,它将如下所示:
BEGIN TRY
-- CODE BLOCK GOES HERE
END TRY
BEGIN CATCH;
-- GET ERRORS DETAILS OR THROW ERROR
END CATCH;
在CATCH 块中,您可以使用一些内置函数获取错误详细信息。例如:
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
然后,基于此详细信息,您可以做一些事情(记录错误,什么都不做,将错误详细信息保存在变量中并将它们传递给外部例程,使用THROW 或再次使用THROW 生成相同的错误-生成一些您的自定义THROW 51000, 'My Custom error message.', 1;。