首页 文章

如何根据具体情况计算SSIS中的行数?

提问于
浏览
0

我在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命令转到SP - EXEC [dbo].[myStoredProcedure] ?,?,? . (我的文件中的数据顺序(?)是: Id, hin, checkValue

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

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

EDIT2:我更新了我的SP . 我在SSIS中将"CounterDeceasedPatients"变量添加为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

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

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

    请注意,我建议INSTEAD尝试使用存储过程中的OUTPUT变量更新计数器,而不是尝试使该想法起作用 .

相关问题