1

我有一个Executed SQL TaskSQL 查询来从表中删除数据。我正在使用while循环批量删除数据并尝试/捕获来处理失败。

Execute SQL Task我想返回已删除的记录时,我添加了捕获已删除记录的输出参数。但我遇到的问题是,如果失败,我无法捕获/返回已删除的记录(已提交)。

我正在使用以下 SQL 逻辑

Declare @DeletedRows INT = 0
BEGIN TRY
    BEGIN TRANSACTION 
        While (@deletedrows < @rowstodelete) 
        BEGIN 
          Delete records where condition is match 
          SET @deletedrows = @deletedrows + @@rowcount  
        END
COMMIT TRANSACTION 
SET ? = @deletedrows   ---- returning deleted rows to output parameter of execute sql task
    END TRY
    BEGIN CATCH
      IF @@TRANCOUNT > 0
         ROLLBACK
    RAISERROR (CAPTURE ERRORS);
    END CATCH

知道如何将已删除或提交的行返回到输出参数Execute SQL Task吗?

4

1 回答 1

0

首先,您需要在 SQL 脚本中更新 COMMIT 的拼写。然后你需要做'SELECT?= @DeletedRows' 在执行 SQL 任务中的 SQL 脚本末尾,并在参数映射屏幕中将参数名称值更改为 0。这应该会给你正确的结果。

在此处输入图像描述

于 2021-11-19T15:09:55.810 回答