【问题标题】:Transaction for sql query stored in temp table存储在临时表中的 sql 查询事务
【发布时间】:2012-08-24 17:56:16
【问题描述】:

我有一个存储过程构建更新查询,每次循环都存储在临时表中。

构建的总查询 UNKNOWN(2 到 4)

如何将多查询放入事务中?

例如,临时表在EXPSQL (nvarchar) 列中包含以下行

id   EXPSQL
1    Update tableA SET Name = 'Test' WHERE id=1
2    Update tableB SET Name = 'Test2' WHERE id=10

我怎样才能开始一个循环执行上述查询的事务?还是有其他方法?

while @id < total
begin
    set @id = @id +1
    select @SQL = EXPSQL FROM #TEMPTABLE WHERE id=@id
    EXEC (@SQL)
end

谢谢

【问题讨论】:

    标签: tsql sql-server-2005


    【解决方案1】:

    如果你想全部执行:

    begin transaction
    
    while @id < total
    begin
        set @id = @id +1
        select @SQL = EXPSQL FROM #TEMPTABLE WHERE id=@id
        EXEC (@SQL)
    
        -- if a error occurs go back to the original state
        if(@@error <> 0)
           rollback transaction
    end
    
    commit transaction
    

    如果你想单独执行每一个:

    while @id < total
    begin
        set @id = @id +1
        select @SQL = EXPSQL FROM #TEMPTABLE WHERE id=@id
    
        begin transaction
        EXEC (@SQL)
    
        -- if a error occurs go back to the original state
        if(@@error <> 0)
           rollback transaction
        else
           commit transaction
    end
    

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多