SQL SERVER中 存儲過程使用事務與捕獲異常

一、格式類似於

			
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


		
二、實例

			
ALTER PROC usp_AccountTransaction  
  
    @AccountNum INT,  
  
    @Amount DECIMAL  
  
AS  
  
BEGIN  
  
    BEGIN TRY --Start the Try Block..  
  
        BEGIN TRANSACTION -- Start the transaction..  
  
            UPDATE MyChecking SET Amount = Amount - @Amount  
  
                WHERE AccountNum = @AccountNum  
  
            UPDATE MySavings SET Amount = Amount + @Amount  
  
                WHERE AccountNum = @AccountNum  
  
        COMMIT TRAN -- Transaction Success!  
  
    END TRY  
  
    BEGIN CATCH  
  
        IF @@TRANCOUNT > 0  
            BEGIN
            ROLLBACK TRAN --RollBack in case of Error  
            END 
            EXEC YourLogErrorProcedure-----------記錄存儲過程執行時的錯誤信息,自定義
    END CATCH  
END  
  
GO  

		
參考資料: SQL SERVER中 存儲過程使用事務與捕獲異常   http://www.studyofnet.com/news/1238.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章