SQL курсор не обрабатывает все файлы
Приведенный ниже курсор работает для первых двух файлов в папке.
Мне нужно, чтобы он работал для любого количества файлов в папке, а не только для первых двух файлов.
Я хочу взять все файлы, которые остались в папке после того, как первый файл был скопирован, и переместить их в подпапку. Курсор переместит только один файл из папки в подпапку.
Где же моя ошибка?
declare @cmdstring varchar(1000) declare @PATH VARCHAR(256) declare @Command varchar(1024) = @Path + ' /A-D /B' declare @createdate datetime declare @filename VARCHAR(500) INSERT INTO #mytemptable EXEC MASTER..xp_cmdshell @Command DECLARE Folder_FileList CURSOR FOR SELECT Filename from #mytemptable OPEN Folder_FileList; FETCH NEXT FROM Folder_FileList INTO @Filename BEGIN SET NOCOUNT ON; set @createdate = GETDATE() set @cmdstring = 'copy "\\servername\c$\MainFolder\Subfolder\' + @filename + '" "C:\FinalFolder\FinalSubFolder\' + @filename + ' "' exec master..xp_cmdshell @cmdstring,no_output set @cmdstring = 'C:\FinalFolder\FinalSubFolder\' + @filename + '"'+ ' ' + '" "\\servername\c$\MainFolder\Subfolder\SSubFolder\'+ @filename +'_'+ CONVERT(varchar(10),getdate(),112) + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108),':','') + '.xls"' exec master..xp_cmdshell @cmdstring,no_output set @cmdstring = 'DEL "C:\FinalFolder\FinalSubFolder\' + @filename exec master..xp_cmdshell @cmdstring,no_output set @cmdstring = 'DEL "\\servername\c$\MainFolder\Subfolder\' + @filename exec master..xp_cmdshell @cmdstring FETCH NEXT FROM Folder_FileList INTO @Filename set @cmdstring = 'copy "\\servername\c$\MainFolder\Subfolder\' + @filename + '" "\\servername\c$\MainFolder\Subfolder\SSubFolder\' + @filename + ' "' exec master..xp_cmdshell @cmdstring,no_output set @cmdstring = 'DEL "\\servername\c$\MainFolder\Subfolder\' + @filename exec master..xp_cmdshell @cmdstring,no_output END CLOSE Folder_FileList DEALLOCATE Folder_FileList
Что я уже пробовал:
MSDN, google search, stackoverflow, различные блоги