当前位置:Gxlcms > 数据库问题 > sql 关于dblink和多条update、insert事务回滚写法

sql 关于dblink和多条update、insert事务回滚写法

时间:2021-07-01 10:21:17 帮助过:3人阅读

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

来确保所有语句的正常执行和有影响的行数。

 

而在写了try的情况下,我们就可规范一下写法,利用RAISERROR

DECLARE @Ret_Msg VARCHAR(200)
DECLARE @Ret_Msg1 VARCHAR(200)
DECLARE @nResult INT
DECLARE @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 TRAN
END TRY
BEGIN CATCH
    IF @@tranCount > 0
                ROLLBACK TRAN;
    SELECT  @Ret_Msg AS vcResult 
END CATCH             

当结果不是我们想要的就RAISERROR抛个错误,让CATCH处理

sql 关于dblink和多条update、insert事务回滚写法

标签:

人气教程排行