View Code
Declare @maxLsh bigint
Declare @newMaxLSh bigint
Declare @SQL nvarchar(1000)

set @maxLsh=0
set @newMaxLSH=0
Set @SQL=''

select @maxLsh=isnull(max(Id),0) from kb_lable_IsScanSync

select @newMaxLsh=Lsh From kb_lable_scan
where lsh>=@maxLsh


if @newMaxLsh>@maxLsh 
Begin
    Set  @SQL='
    BEGIN TRANSACTION;
    BEGIN TRY
        update kb_lable_temp
        set isScan=''''
        from
        kb_lable_temp t inner join kb_lable_scan s
        on t.Id=s.Id
        where s.lsh>='+cast(@maxLSH as nvarchar(20))+' and (t.IsScan is null or t.Isscan<> '''');
     
        insert into KB_Lable_IsScanSync(Id,AddTime,IsSync) Values('+cast(@newMaxLSH as nvarchar(20))+',getdate(),1);

    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
            ROLLBACK TRANSACTION;
    END CATCH;

    IF @@TRANCOUNT > 0
        COMMIT TRANSACTION;
    '

    Exec( @SQL)
End

一个T-SQL 的Try Catch事务代码

相关文章:

  • 2018-07-01
  • 2021-11-22
  • 2021-05-28
  • 2021-09-08
  • 2022-12-23
  • 2021-06-06
猜你喜欢
  • 2021-11-02
  • 2021-11-18
  • 2021-10-19
  • 2021-11-06
  • 2021-07-31
  • 2021-09-07
  • 2021-06-08
相关资源
相似解决方案