2016-05-30 11 views
0

私は以下のように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を選択しようとしていますが、それはエラーを与えている: enter image description here

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.

私は助けが必要です。

+0

SSISの[行数変換](https://msdn.microsoft.com/en-us/library/ms141136.aspx)について聞いたことがありますか? –

+0

はい、私はこのページを読んでいます:http://www.techbrothersit.com/2013/07/ssis-how-to-use-row-count.html しかし、私は行カウントを管理できませんでした。それをフィルタリングします。 –

+0

SSIS変数 '@ rowcount'を追加します。 0に初期化します。ストアドプロシージャに出力パラメータを作成し、ストアドプロシージャを変更して 'if'の内部に追加します。以前の呼び出しで変更された可能性のある値で渡されるように、SSIS変数を出力パラメータにマップします。 –

答えて

0

スクリプト変換とDataFlowレベルのパッケージ変数を使用します。

int型の変数をデフォルト値0で作成し、スクリプト変換では、入力行に対してcheckvalueがnullでない場合は変数をインクリメントしてから、変数の値を使用してカウンタの値を設定しますカラム。

私は、ストアドプロシージャ内のOUTPUT変数を使用してカウンタを更新しようとしたが、このアイデアを機能させる方法としてではなく、このINSTEADを使用することをお勧めします。

関連する問題