SQL SERVER存儲過程當中如何使用事務與try catch

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

http://www.studyofnet.com/news/1238.htmlclass

相關文章
相關標籤/搜索