sql 關於dblink和多條update、insert交易回復寫法

來源:互聯網
上載者:User

標籤:

在預存程序的編寫中難免會遇到調用同庫他人的proc和跨庫調用proc,還有一個proc中有多條對多表進行寫入和修改的語句。那麼就會用到tran。

如果我們在不寫try的情況下就要對每個insert,update的後面寫上

IF @@error <> 0                OR @@Rowcount = 0                BEGIN                    ROLLBACK TRAN                 END    

來確保所有語句的正常執行和有影響的行數。

 

而在寫了try的情況下,我們就可規範一下寫法,利用RAISERROR

DECLARE @Ret_Msg VARCHAR(200)DECLARE @Ret_Msg1 VARCHAR(200)DECLARE @nResult INTDECLARE @vcResult VARCHAR(200)BEGIN TRY        BEGIN TRAN               UPDATE Table_a set a=1 WHERE b =1               IF @@Rowcount = 0               BEGIN                    SET @Ret_Msg = ‘執行失敗‘                    SET @Ret_Msg1 = ‘Table_a 更新失敗‘                    RAISERROR(@Ret_Msg1,16,1)               END               資料庫.架構.proc 1,2, @nResult OUT, @vcResult OUT               IF @nResult <0               BEGIN                    SET @Ret_Msg = @vcResult                    SET @Ret_Msg1 = ‘dbLink調用失敗‘ + @vcResult                    RAISERROR(@Ret_Msg1,16,1)               END               SELECT @Ret_Msg  as vcResult         COMMIT TRANEND TRYBEGIN CATCH    IF @@tranCount > 0                ROLLBACK TRAN;    SELECT  @Ret_Msg AS vcResult END CATCH             

當結果不是我們想要的就RAISERROR拋個錯誤,讓CATCH處理

sql 關於dblink和多條update、insert交易回復寫法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.