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() 返回错误消息的完整文本。该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。

    -----------------------------------------------------------

BEGIN TRY
BEGIN TRANSACTION
----------------------------//////////////////////////////
COMMIT TRANSACTION
END TRY
BEGIN CATCH
    rollback
    DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
    SELECT @ErrMsg = ERROR_MESSAGE(),@ErrSeverity = ERROR_SEVERITY()
  RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH