如何根据特定条件统计SSIS中的行数?

How to count rows in SSIS based on specific conditions?

我在 SQL Server 2008 中有一个存储过程,如下所示。

ALTER PROCEDURE myStoredProcedure
        @Id int,
        @hin varchar(30),
        @checkValue varchar(30),
        @CounterDeceasedPatients int=0 OUTPUT

insert into myTable
values (@Id, @hin, GETDATE())

if (@checkValue is not null)
BEGIN
    set @CounterDeceasedPatients = @CounterDeceasedPatients + 1;
    update myTable
    set hin= @checkValue
    where Id = @Id

RETURN;
END

我通过 SSIS 调用此 SP,使用数据流中的 OLE DB 命令,它使我文件中的每一行都转到 SP - 使用 sql 命令:EXEC [dbo].[myStoredProcedure] ?,?,?。 (我文件中数据(?)的顺序是:Id, hin, checkValue

我想做的是统计在我的SP中有多少条不同的记录(不同的行)进入了if条件。所以我认为需要在某处放置一个 "row counter" ,过滤它在 @checkValue 不为空的地方的使用。但我找不到它如何。我是 SSIS 的新手,所以如果有人帮助我解决这个问题,我将不胜感激。谢谢。

编辑:我正在尝试 select 仅将 @checkValue 作为我的 ROW COUNT 的输入参数,但它给出了错误:

EDIT2:我更新了我的 SP。我在SSIS中添加了"CounterDeceasedPatients"变量作为Int32并将其赋值为0。我的sql执行命令是:EXEC [dbo].[myStoredProcedure] ?,?,?,?,CounterDeceasedPatients

这是给我的错误:

Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80040E07 Description: "Error converting data type nvarchar to int.".

当我使用 EXEC [dbo].[myStoredProcedure] ?,?,?,?,CounterDeceasedPatients output 作为 SQL 命令时,我收到错误:

Description: "Cannot use the OUTPUT option when passing a constant to a stored procedure.

我需要帮助。

使用脚本转换和 DataFlow 级包变量。

创建默认为0的int型变量,并在脚本转换中,如果checkvalue对传入行不为null,则自增变量,然后使用变量的值进行设置您的计数器列的值。

请注意,我建议的是尝试使用存储过程中的 OUTPUT 变量更新计数器,而不是尝试让该想法生效。