循环遍历 table,同时记录不断添加到 table
Loop through table while records keep getting added to the table
我有一个 table (FilesToCopy
) 和一个文件名列表。
id
filename
1
c:\temp\file1.txt
2
c:\temp\file2.txt
3
c:\temp\file2.txt
文件一个接一个地复制到另一个位置(例如c:\test
)。
我可以很容易地遍历这个 table 来为每个文件执行一个复制命令。
这只是一个读取 table 的执行 SQL 任务,将结果放入一个对象变量,然后是一个 For Each 容器。
但是,如果在执行 for each 循环期间,记录被添加到 table FilesToCopy
中怎么办?
假设 在 for each 循环中 文件 c:\temp\file99.txt 被添加到 table FilesToCopy
id
filename
1
c:\temp\file1.txt
2
c:\temp\file2.txt
3
c:\temp\file2.txt
99
c:\temp\file99.txt
我能以某种方式告诉 for each 循环它还必须复制文件 c:\temp\file99.txt 即使该文件在循环开始时不存在吗?
所以效果是:
- table
FilesToCopy
被读取,开始循环。
c:\temp\file1.txt
复制到 c:\test
c:\temp\file1.txt
的记录已从 table FilesToCopy
中删除
c:\temp\file2.txt
复制到 c:\test
c:\temp\file2.txt
的记录已从 table FilesToCopy
中删除
- 同时
c:\temp\file99.txt
添加到 table FilesToCopy
c:\temp\file3.txt
复制到 c:\test
c:\temp\file3.txt
的记录已从 table FilesToCopy
中删除
c:\temp\file99.txt
复制到 c:\test
c:\temp\file99.txt
的记录已从 table FilesToCopy
中删除
- 当table
FilesToCopy
中没有更多记录时循环结束
所以我想做的是以某种方式刷新循环开始时输入的列表。
我希望这是清楚的。
我会改用 do while 循环。
有一个名为 moreToProcess 的变量,数据类型为布尔值。
使用execute SQL statement based on count > 0
在进入循环之前设置值
循环中的第一步是使用 exec SQL.
获取要处理的记录
在退出循环之前重新运行 SQL 以重置变量。
当 moreToProcess 为真时设置为循环。
我有一个 table (FilesToCopy
) 和一个文件名列表。
id | filename |
---|---|
1 | c:\temp\file1.txt |
2 | c:\temp\file2.txt |
3 | c:\temp\file2.txt |
文件一个接一个地复制到另一个位置(例如c:\test
)。
我可以很容易地遍历这个 table 来为每个文件执行一个复制命令。
这只是一个读取 table 的执行 SQL 任务,将结果放入一个对象变量,然后是一个 For Each 容器。
但是,如果在执行 for each 循环期间,记录被添加到 table FilesToCopy
中怎么办?
假设 在 for each 循环中 文件 c:\temp\file99.txt 被添加到 table FilesToCopy
id | filename |
---|---|
1 | c:\temp\file1.txt |
2 | c:\temp\file2.txt |
3 | c:\temp\file2.txt |
99 | c:\temp\file99.txt |
我能以某种方式告诉 for each 循环它还必须复制文件 c:\temp\file99.txt 即使该文件在循环开始时不存在吗?
所以效果是:
- table
FilesToCopy
被读取,开始循环。 c:\temp\file1.txt
复制到c:\test
c:\temp\file1.txt
的记录已从 tableFilesToCopy
中删除
c:\temp\file2.txt
复制到c:\test
c:\temp\file2.txt
的记录已从 tableFilesToCopy
中删除
- 同时
c:\temp\file99.txt
添加到 tableFilesToCopy
c:\temp\file3.txt
复制到c:\test
c:\temp\file3.txt
的记录已从 tableFilesToCopy
中删除
c:\temp\file99.txt
复制到c:\test
c:\temp\file99.txt
的记录已从 tableFilesToCopy
中删除
- 当table
FilesToCopy
中没有更多记录时循环结束
所以我想做的是以某种方式刷新循环开始时输入的列表。
我希望这是清楚的。
我会改用 do while 循环。
有一个名为 moreToProcess 的变量,数据类型为布尔值。
使用execute SQL statement based on count > 0
在进入循环之前设置值循环中的第一步是使用 exec SQL.
获取要处理的记录在退出循环之前重新运行 SQL 以重置变量。
当 moreToProcess 为真时设置为循环。