在 SQL 任务中使用 Foreach 循环容器中的变量 [SSIS]
好的,我有一个简单的过程...
读取一个表并获取符合条件的行 “StatusID”为 1。简单。
从 PreorderStatus 中选择 ProductID,其中 StatusID = 1
Foreach 返回的行 查询,执行操作。为了 为了简单起见,我们修改一下 原始表设置 “StatusID”为 2。
更新 PreorderStatus 设置 StatusID = 2,其中 ProductID = @ProductID
为了在 SSIS 中执行此操作,我使用第一条语句创建了一个简单的“执行 SQL 任务”。在编辑器中,我将结果集设置为返回完整结果集,并将结果名称设置为0以填充名为的对象变量准备就绪。
然后,输出将路由到 For Each 循环容器。 Enumerator 设置为 Foreach ADO Enumerator,并将对象源变量设置为上面的 ReadySet 变量。我还将变量 v_ProductID 映射到索引 0。
在 Foreach 循环开始处设置断点会显示变量设置正确。伟大的!!现在进行第二步...
现在我已经在 foreach 容器中放置了一个新的 SQL 任务。现在我有点头疼了。我如何在 SQL 语句中实际使用该变量。简单地使用“v___ProductID”或“User::v_ProductID”似乎不起作用。映射参数似乎是一个好主意(得到了 @ProductID 和所有内容!)但这似乎也不起作用。
我感觉我错过了一些非常简单的东西,但不知道是什么。感谢您的帮助!
Ok, I have a simple process...
Read a table and get the rows that
have a "StatusID" of 1. Simple.Select ProductID from PreorderStatus where StatusID = 1
Foreach row returned from that
query, perform an action. For
simplicity sake, let's just modify
the original table to set the
"StatusID" to 2.Update PreorderStatus set StatusID = 2 where ProductID = @ProductID
In order to do this in SSIS, I have created a simple "Execute SQL Task" with the first statement. In the editor I have set the Result Set to return a Full result set and the Result Name of 0 is set to fill an object variable named ReadySet.
The output is then routed to a For Each Loop container. The Enumerator is set to Foreach ADO Enumerator and the object source variable set to the ReadySet variable from above. I have also mapped the variable v_ProductID to index 0.
Setting a breakpoint at the begining of the Foreach loop shows the variable being set correctly. GREAT!! Now on to step two....
Now I have placed a new SQL task in the foreach container. Now I have a head scratcher. How do I actually use the variable in the SQL statement. Simply using "v___ProductID" or "User::v_ProductID" doesn't seem to work. Mapping a parameter seemed like a good idea (got a @ProductID and everything!) but that didn't seem to work either.
I get the feeling that I am missing something pretty simple but can't tell what. Thanks for any help!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为有更好的方法。以下是大致步骤:
华泰
I think there is a better approach. Here are the approximate steps:
HTH
当我想使用执行 sql 任务并根据变量改变某些内容时,我使用存储过程并将变量作为过程的输入参数。
然后在执行 SQL 任务中设置参数并将 SQL 语句设置为如下所示:
When I want to use an execute sql task and vary something based on a variable, I use a stored proc and make the variable the input parameter for the proc.
Then you set the parmeter in the execute SQL task and set the SQL statement to something like: