1、格式相似於html
CREATE PROCEDURE YourProcedure AS BEGIN SET NOCOUNT ON; BEGIN TRY---------------------開始捕捉異常 BEIN TRAN------------------開始事務 UPDATE A SET A.names = B.names FROM 表1 AS A INNER JOIN 表2 AS B ON A.id = B.id UPDATE A SET A.names = B.names FROM 表1 AS A INNER JOIN 表2 AS B ON A.TEST = B.TEST COMMIT TRAN -------提交事務 END TRY-----------結束捕捉異常 BEGIN CATCH------------有異常被捕獲 IF @@TRANCOUNT > 0---------------判斷有沒有事務 BEGIN ROLLBACK TRAN----------回滾事務 END EXEC YourLogErrorProcedure-----------記錄存儲過程執行時的錯誤信息,自定義 END CATCH--------結束異常處理 END
2、捕獲錯誤的經常使用函數sql
一、ERROR_NUMBER() 返回錯誤號。函數
二、ERROR_SEVERITY() 返回嚴重級別。spa
三、ERROR_STATE() 返回錯誤狀態號。code
四、ERROR_PROCEDURE() 返回出現錯誤的存儲過程或觸發器的名稱。htm
五、ERROR_LINE() 返回致使錯誤的行號。對象
六、ERROR_MESSAGE() 返回錯誤消息的完整文本。該文本可包括任何可替換參數所提供的值,如長度、對象名或時間。事務
參考資料:SQL SERVER存儲過程當中如何使用事務與try catchget