我在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的输入参数,但它给出错误:
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 回答
使用脚本转换和DataFlow级包变量 .
创建默认值为0的int类型变量,并在脚本转换中,如果传入行的
checkvalue
不为null,则递增变量,然后使用变量的值设置计数器列的值 .请注意,我建议INSTEAD尝试使用存储过程中的OUTPUT变量更新计数器,而不是尝试使该想法起作用 .