我正在尝试编写一个循环遍历其自身的存储过程,直到满足设置文件计数,然后继续运行。但是,由于我创建了一个带有结果的临时表,我无法将其转换为while循环的游标。
以下是获取文件的查询
DROP TABLE IF EXISTS #1
CREATE TABLE #1 (
id int IDENTITY(1,1)
,subdirectory nvarchar(512)
,depth int
,isfile bit);
INSERT #1
EXEC xp_dirtree '\\ServerName\File_BackUp\CSV\', 10, 1
SELECT COUNT(ID) FROM #1;
是否可以将其包裹起来以使其保持循环直到计数达到10?
答案 0 :(得分:0)
WHILE
在这里应该可以正常工作。尝试:
WHILE (SELECT COUNT(ID) FROM #1 < 10)
BEGIN
INSERT #1
EXEC xp_dirtree '\\ServerName\File_BackUp\CSV\', 10, 1
WAITFOR DELAY '00:00:05' -- Wait five seconds between checks
-- so you don't flog your machine badly.
END
答案 1 :(得分:0)
您的问题看起来像某种集成方案(检查传入文件的目录)。
如果您的情况严重依赖于移动文件,转换,加载等 我建议使用适当的工具,如SQL Server Integration Services。
您可以轻松构建FileWatcher
任务:
Developing a File Watcher Task for SQL Server Integration Services
或使用第三方:
Using the Konesans File Watcher Task in SSIS to Process Data Files
<强> File Watcher Task 强>
文件监视器任务执行它真正说的内容,它会查看等待文件的文件夹。当找到可用文件时,任务完成,返回文件名以便在包中继续使用。