Ssis 为每个循环容器将执行Sql任务结果集对象传递给
我在脚本任务中编写了一个oracle查询,并将其分配给字符串变量。这是我的问题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" +
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任务之后放置脚本任务,并查看查询是否返回值