1

スクリプトタスクでOracleクエリを記述し、それを文字列変数に割り当てました。これは私の質問です

string oracle_query = "SELECT bank_ID, Branch_ID, Trans_NUM, Trans_DT, convert(Varchar(25),quantity) AS quantity  FROM OPENQUERY(orcale_server_name,  'SELECT * "
                + "FROM oracletable" +
                 " where bank_ID =''" + Dts.Variables["User::bank_ID"].Value.ToString() + "'' AND Trans_DT = ''" + Dts.Variables["User::Trans_DT"].Value.ToString() + "'' AND quantity = " + Dts.Variables["User::quantity"].Value.ToString() + " AND Branch_ID = ''" + Dts.Variables["User::Branch_ID"].Value.ToString() + "'' ')"; 

このクエリの結果は、パッケージで宣言した文字列variablに割り当てられています。

Dts.Variables["oraclequery"].Value = oracle_query; .  

このクエリの出力は

bank_ID  Branch_ID  Trans_Num  Trans_DT   Quantity  
12         13       12AS566    2012-01-01  4000     

Trans_Num列に基づいて、もう1つのテーブルを更新する必要があります。

スクリプトタスクの代わりにoledbTranFormationを使用できますが、Oledb Sourceで実行パラメーターを渡している間、データは送信されません。

したがって、スクリプトタスクの結果はOracleQuery変数に割り当てられ、SQLタスクの実行でソース変数として渡され、結果セットは完全な結果セットとして渡されます。

このExecuteSQlTask​​の結果セットは、ループコンテナごとに渡され、varibaleインデックス内でOracleQueryVaribaleを割り当てました。

しかし、まだデータが入力されていません

4

1 に答える 1

2

1.まず、Oracleクエリから取得する列の変数を作成する必要があります

2.次に、変数oraclequeryはSystem.Object型である必要があります

3. resultSet[SQLの実行]タスクのタブで、結果を変数に割り当てますoraclequery

ResultName    VariableName 
 0            oraclequery 

4.次に、ForEachループでoraclequeryを使用ADO Enumeratorして選択ADO Object SourceVariableし、ラジオボタンをクリックします。Rows in the First Table

for eachループの変数マッピングで、クエリから取得するのと同じ順序で列をマッピングします。

 Variable     Index 
  BankId       0
  Branch_ID    1 
 ....          ..

DFTこれで、Foreachループ内に配置された内部のこれらの変数にアクセスしOLEDB component、に基づいて別のテーブルを更新するために使用できます。Trans_Num

詳細については、この記事これを参照してください

于 2012-07-30T08:09:03.583 に答える