如何根据特定条件统计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 变量更新计数器,而不是尝试让该想法生效。
我在 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 变量更新计数器,而不是尝试让该想法生效。