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() + "'' ')"; 

此查询的结果已分配给我在包中声明的字符串变量

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

这个查询的输出是

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

基于 Trans_Num 列,我需要再更新一张表。

我可以使用 oledb TranFormation 而不是脚本任务,但是在 Oledb 源中传递运行参数时,没有数据到来。

因此,脚本任务的结果我已分配给 OracleQuery 变量,并在 Execute Sql Task 中作为源变量传递,并将结果集作为Full Result Set传递。

这个执行 SQl 任务结果集我已经传递给每个循环容器和变量索引,我已经分配了 OracleQuery Varibale。

但仍然没有数据填充

4

1 回答 1

2

1.首先,您需要为从 oracle 查询中检索到的列创建变量

2.那么变量oraclequery应该是System.Object类型

3.在resultSet执行SQL任务选项卡中将结果分配给变量oraclequery

ResultName    VariableName 
 0            oraclequery 

4.然后在 ForEach 循环中使用ADO Enumerator并选择ADO Object SourceVariableoraclequery 并单击单选按钮Rows in the First Table

在 for each 循环的变量映射中,按照从查询中检索到的顺序映射列。

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

现在您可以在放置在 Foreach 循环中的 a 内访问这些变量DFT,然后OLEDB component根据Trans_Num

有关更多详细信息,请参阅本文

于 2012-07-30T08:09:03.583 回答