我有一个存储过程( sp_selectClient
)有一个游标,它在每次迭代中执行一些插入操作 . 在sp的最后一个陈述中,我从表中选择了结果 .
现在我正在创建一个ssis包,我是新手 . 我通过在控制流中添加数据流任务找到了最简单的方法,然后在数据流中添加了一个 source(OLEDB)
,其中我设置了SQL命令 'EXEC sp_selectClient'
. 存储过程不接受任何参数 . 然后我将其映射到 destination(flat file)
. 我的查询是否可以使用 Execute SQL Task
执行此操作 . 如果是,那么这样做的优点和缺点是什么 .
2 回答
Yes 你也可以用 Execute SQL task 做同样的事情 .
数据流任务中的OLE DB命令:将始终逐行处理数据
在控制流中执行SQL任务:将批量处理数据
What is the difference between Execute SQL Task and OLE DB Command
如果存储过程创建结果集,则可以使用“执行SQL任务”并将Resultsets存储在
Object
类型的变量中,然后循环Script Task
内的行 .这些是有用的链接,可以帮助您在变量中存储
ResultSets
并在Script Task
内的循环上循环:How to loop through a generic object in SSIS Script Task
Implementing Foreach Looping Logic in SSIS
Execute SQL Task
If your stored procedure does not produce any ResultSets (Select command) it is best practice to use an Execute SQL Task
OLE DB Command
为每行运行插入,更新或删除语句,而Execute SQL Task
在此实例中执行批量插入 . 这意味着通过包的每一行都会在到达OLE DB Command
时运行一个insert语句 .References: