【发布时间】:2014-04-15 10:34:50
【问题描述】:
我有一个如下的存储过程:
DECLARE @FinalQuery varchar(max), @TableName varchar(200)
DECLARE ListTable CURSOR FOR SELECT....
DECLARE @isError bit=0
OPEN ListTable
FETCH NEXT FROM ListTable INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
//Some code to generate @FinalQuery to merge data into table @TableName
BEGIN TRY
EXEC(@FinalQuery)
END TRY
BEGIN CATCH
Set @IsError = 1
//Some code to write error to log file.
END CATCH
FETCH NEXT FROM ListTable INTO @TableName
END
CLOSE ListTable
DEALLOCATE ListTable
现在,我想将事务和回滚添加到我的存储过程。我希望执行所有动态@FinalQuery 查询,最后,当它完成时,如果存在任何错误(@IsError=1)然后回滚所有内容。我该怎么做?
【问题讨论】:
标签: sql sql-server transactions rollback