私は以下のようにSQL Server 2008にストアドプロシージャを持っています。特定の条件に基づいてSSISの行を数える方法は?
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
私は、ファイル内の各列は、SPに行く可能データフローでOLE DBコマンドを使用して、SSISを経由してこのSPを呼び出す午前 - SQLコマンドを使用して:EXEC [dbo].[myStoredProcedure] ?,?,?
。 (私のファイル内のデータ(?)の順番はId, hin, checkValue
です)
私がしたいことは、いくつのレコード(異なる行)が私のSPのif条件に入ったのかを数えることです。だから、@checkValueがnullでないところで、その使用法をフィルタリングして、どこかに "行カウンタ"を置く必要があると思います。しかし、私はそれを見つける方法を見つけることができませんでした。私はSSISの初心者ですから、誰かが私にこのことを理解させる助けになるかどうか感謝します。ありがとう。
編集:私は私の行カウントのための入力パラメータとしてのみ@checkValueを選択しようとしていますが、それはエラーを与えている:
EDIT2:私は私のSPを更新します。それから、私はSQLコマンドとしてEXEC [dbo].[myStoredProcedure] ?,?,?,?,CounterDeceasedPatients output
を使用する場合
Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80040E07 Description: "Error converting data type nvarchar to int.".
:EXEC [dbo].[myStoredProcedure] ?,?,?,?,CounterDeceasedPatients
は、これは私にエラーを与えている:私は、SSISでのInt32として変数と私のSQLコマンドを実行して0にそれを割り当てられている「CounterDeceasedPatients」を追加しました私はエラーを受け取ります:
Description: "Cannot use the OUTPUT option when passing a constant to a stored procedure.
私は助けが必要です。
SSISの[行数変換](https://msdn.microsoft.com/en-us/library/ms141136.aspx)について聞いたことがありますか? –
はい、私はこのページを読んでいます:http://www.techbrothersit.com/2013/07/ssis-how-to-use-row-count.html しかし、私は行カウントを管理できませんでした。それをフィルタリングします。 –
SSIS変数 '@ rowcount'を追加します。 0に初期化します。ストアドプロシージャに出力パラメータを作成し、ストアドプロシージャを変更して 'if'の内部に追加します。以前の呼び出しで変更された可能性のある値で渡されるように、SSIS変数を出力パラメータにマップします。 –