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

时间:2016-05-30 12:56:52

标签: sql sql-server sql-server-2008 ssis ssis-2008

我在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使用数据流中的OLE DB命令调用此SP,它使我的文件中的每一行都使用sql命令:EXEC [dbo].[myStoredProcedure] ?,?,?进入SP。 (我的文件中的数据顺序(?)是:Id, hin, checkValue

我想要做的是计算在SP中输入if条件的不同记录(不同行)的数量。因此,我认为需要设置一个"行计数器"某处,过滤@checkValue不为空的用法。但我无法找到它。我是SSIS的新手,所以如果有人帮我解决这个问题我很感激。感谢。

编辑:我试图仅选择@checkValue作为我的ROW COUNT的输入参数,但是它给出了错误: enter image description here

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

这给了我错误:

  

来源:"用于SQL Server的Microsoft OLE DB提供程序" HRESULT:   0x80040E07描述:"将数据类型nvarchar转换为的错误   INT"

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

  

描述:"传递常量时不能使用OUTPUT选项   存储过程。

我需要帮助。

1 个答案:

答案 0 :(得分:0)

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

创建默认值为0的int类型变量,并在脚本转换中,如果传入行的checkvalue不为null,则递增变量,然后使用变量的值来设置值你的专栏。

请注意,我建议INSTEAD尝试使用存储过程中的OUTPUT变量更新计数器,而不是试图让这个想法发挥作用。