Ssis 为每个循环容器将执行Sql任务结果集对象传递给

Ssis 为每个循环容器将执行Sql任务结果集对象传递给,ssis,Ssis,我在脚本任务中编写了一个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" +

我在脚本任务中编写了一个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列,我需要再更新一个表

我可以使用oledb转换来代替脚本任务,但在oledb源中传递运行参数时,没有数据

因此,我将脚本任务的结果分配给OracleQuery varibale,并作为源变量在Execute Sql task和resultset中传递为完整结果集

我为每个循环容器和分配给OracleQuery varibale的varibale索引传递的执行SQl任务结果集


但是仍然没有数据填充。首先,需要为从oracle查询中检索的列创建变量

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

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

ResultName    VariableName 
 0            oraclequery 
4.然后在ForEach循环中使用
ADO枚举器
并选择
ADO对象源变量
进行oraclequery,然后单击第一个表中的单选按钮

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

 Variable     Index 
  BankId       0
  Branch_ID    1 
 ....          ..
现在,您可以在Foreach循环中放置的
DFT
内访问这些变量,然后使用
OLEDB组件
根据
Trans\u Num


有关更多详细信息,请参阅此和

在执行SQl任务时应使用什么作为源。我无法在那里编写直接oracle查询。我认为它不支持删除connectionType,因为OLEDB确实支持oracle查询当您在execute sql任务中编写该查询时,需要在where子句中为变量指定参数,为每个循环容器指定变量,以检查是否获得值,我将脚本任务放在foreach循环中,在只读变量包中,我有4个变量之一user::TransNum,在脚本任务中,我编写了字符串trans=dts.variables[“trans_Num”].value.tostring()。但是在每次循环之后,它都不会进入脚本taskru中,从oracle查询中获取值吗?尝试在执行sql任务之后放置脚本任务,并查看查询是否返回值