SQL Server 2008 R2
SSIS_Foreach 循环容器_Foreach ADO 枚举器(逐行读取某个表)
1.创建如下表:
-- drop table mytab
create table mytab(id int ,name varchar(30))
insert into mytab values(1,'aaa'),(2,'bbb'),(3,'ccc'),(4,'ddd')
select * from mytab
/*
id name
---------
1 aaa
2 bbb
3 ccc
4 ddd
*/
2. 创建如下图的控制流。以下操作意思是:执行sql查询某个表,将结果集传递到循环容器中,容器逐行取数来执行里面的sql任务。
3.编辑 最上面那个【执行 SQL 任务】,输入相关查询参数,选择【完整结果集】:
4.在选择【结果集】中,创建一个变量,类型为【Object】,结果名称为 “0”(结果集类型为完整结果集或XML,则必须使用 0 作为结果集名称)
5.好了,现在编辑【Foreach 循环容器】,选择【Foreach ADO 枚举器】,ADO对象源变量为【User::var_myResult】,枚举模式为【第一个表中的行】
6.创建一个整型变量id,索引取0,则为第一列,第一列类型id为整型。循环容器编辑完成!
7.编辑容器内的平【执行 SQL 任务】,设置如下。因为逐行取的只有id,所以我按id更新某个表。
8.参数映射中添加变量,传递变量为id,id为整型int,所以取类型long。参数名称为0,即第一个问号,多个参数可按顺序去名称。
9.设计完成!运行!结果如下: