2017-06-28 9 views
1

私は2つの変換を持つ1つのジョブを持っています。テーブル入力のパラメータを渡す方法は?

  1. 変換他の変換に渡すデータのリストを取得します。ここでは、最初の変換から各行パスごとに実行されます。私は

    「結果から行を取得する」を使用している第2の変換において

  2. - 5つのフィールドがある「結果から行を取得する」ではなく、テーブル入力に>「テーブル入力」

を私2番目と3番目のフィールドのみを使用する必要があります。

私が単一のパラメータを与えることを試みたとしても "?"その与えられたエラー

" 2017/06/29 15:11:02 - テーブル0からデータを取得 - エラー設定値#3 [文字列]準備文に 2017/06/29 15:11:02 - テーブル0からのデータ取得 - パラメータインデックスが範囲外です(3>パラメータ数2)。 "

私のクエリは非常に簡単です select * from table where col1 =? col2 =?

どうすればこの問題を解決できますか?エラー?私の何かが間違っているのですか?

+0

、SQLクエリとは何ですか?それは、私にSQLの問題のように見える "2は正しい値の1と1の間にない"ということです – Nikhil

+0

正しいparamsを他の問題で渡した後でも、私は質問を更新しました。 –

答えて

3

クエリが

select * from table where col1="${param2}" and col2="${param3}"になるようにまた、あなたのパラメータに名前を付けることができます。

「スクリプトの変数を置き換える」チェックボックスをチェックし、SQLの方言に引用符を適合させることを忘れないでください(例:'${param1}':SQL-Server)。

param2param3は、${...}デコレーションとSQLを壊さない値を使用せずに、変換の設定/パラメータに存在する必要があります。

Set variablesステップ(変数とパラメータは最初の近似では同義語です)とスコープが少なくともValid in the parent jobの前回の変換で、パラメータの値を設定または変更できます。

もちろん

レガシー目的のために、名前のパラメータまたはその他の理由で主張すれば、あなたは最初のものは破棄されるべきであることPDIを伝える責任がある、(例えばwhere (? is null or 0=0) and col1=? and col2=?

2

5つのフィールドがテーブル入力に到達している場合、クエリに5つのパラメータを適切な順序で渡す必要があります。また、各パラメータは一度だけ使用されます。

フィールドが5つあり、そのうちの2つしか使用しない場合は、結果セットとテーブル入力の間に選択値のステップを入れ、実際のクエリパラメータのみを使用することをお勧めします。

関連する問題