Employee:
EmployeeID EmployeeName EmployeeNumber StartDate StopDate
1 Tom 7887 3/1/2014 3/1/2015
2 Harry 7888 3/1/2013 3/1/2015
3 Frank 7889 3/1/2012 3/1/2015
4 John 7890 3/1/2011 3/1/2015
我在Sql Server中有一个Employee表。我使用员工信息将值传递给Oracle查询,以使用数据流任务从Oracle获取数据。 但我从未尝试使用pl / sql,因为它看起来与sql不同。 我的oracle查询看起来像
SELECT *
FROM Components A INNER JOIN Values b
on A.Rowid=B.Rowid
and A.Contact IN(:EmployeeName)
and A.Sub IN(:EmployeeNumber )
WHERE
A.time BETWEEN TO_DATE(:StartDate) AND TO_DATE(:EndDate) + 0.99999
How can I pass my Employee table values in to above sql query using for loop Container.
答案 0 :(得分:1)
您可以像执行SQL Server一样查询Oracle。在您的情况下,您必须从查找变量构建Oracle查询。例如,您的变量ExtractSQL将是一个如下表达式 -
“SELECT * FROM Components A INNER JOIN值b 在A.Rowid = B.Rowid 和A.Contact ='“+ @ [User :: EmployeeName] +”'和A.Sub ='“+ @ [User :: EmployeeNumber] +”'WHERE A.时间截止到_DATE('“+ @ [User :: StartDate] +”')和TO_DATE('“@ @@ [User :: EndDate] +”')+ 0.99999“
根据您在结尾存储日期的方式,您可能必须将第二个参数传递给To_Date函数,格式为Eg。 TO_DATE('2014-05-14 15:01:27','YYYY-MM-DD HH24:MI:SS')
- 回答有关设置变量的问题。
创建一个名为EmployeeRecordset的变量,类型为“Object”。
在结果集选项卡的执行SQL任务中,将结果名称0和变量名称设置为User :: EmployeeRecordset。
在for each循环中,将Enumerator设置为ForEach ADO枚举器,将ADO对象源变量设置为User :: EmployeeRecordset。枚举模式,您可以将其保留为第一个表中的行。
在变量映射中设置行级变量 - 即员工编号,员工姓名等,从查询返回的顺序开始,索引为0.
现在,您应该能够使用循环内的变量来形成Oracle查询。
答案 1 :(得分:0)
它应该是这样的: