时间:2021-07-01 10:21:17 帮助过:3人阅读
来确保所有语句的正常执行和有影响的行数。
而在写了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事务回滚写法
标签: