我在Script Task中编写了一个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 Source中传递Running参数时,没有数据可用。
因此,我已将脚本任务的结果分配给OracleQuery varibale,并在Execute Sql Task和resultset中作为源变量传递为完整结果集。
我已经为每个循环容器和内部varibale索引传递了这个执行SQl任务结果集我已经分配了OracleQuery Varibale。
但仍然没有填充数据
答案 0 :(得分:2)
1.首先,您需要为从oracle查询中检索的列创建变量
2.然后变量oraclequery
的类型应为System.Object
3.在执行SQL任务的resultSet
选项卡中,将结果分配给变量oraclequery
ResultName VariableName
0 oraclequery
4.然后在ForEach循环中使用ADO Enumerator
并选择ADO Object SourceVariable
到oraclequery并单击单选按钮Rows in the First Table
在每个循环的变量映射中,按照从查询中检索的顺序映射列。
Variable Index
BankId 0
Branch_ID 1
.... ..
现在,您可以在位于Foreach循环中的DFT
内部访问这些变量,然后使用OLEDB component
根据Trans_Num