BEGIN TRY
{ sql_statement ¦ statement_block }
END TRY
BEGIN CATCH
[ { sql_statement ¦ statement_block } ]
END CATCH
[ ; ]
异常部分:
在 CATCH 块的作用域内,可以使用以下系统函数来获取导致 CATCH 块执行的错误消息:
ERROR_NUMBER() 返回错误号。
ERROR_SEVERITY() 返回严重性。
ERROR_STATE() 返回错误状态号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_MESSAGE() 返回错误消息的完整文本。 该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。
二。实例:
Step 1: Create PROCEDURE SysLogError ASBEGINInsert into SystemErrorLog (SPName,Description,LogTime)Values(ERROR_PROCEDURE(),Convert(nvarchar(MAX),ERROR_LINE()) + ':' + ERROR_MESSAGE(),GetDate())END
Step 2:
BEGIN TRY BEGIN TRANSACTION;
。。。。
COMMIT TRANSACTION;END TRYBEGIN CATCH IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END
EXECUTE [dbo].[SysLogError];END CATCH;
来源: