Несмотря на то, что у вас есть комментарий о том, что для использования курсора потребуется «очень много времени», в этом случае самыми большими накладными расходами является фактическое удаление файла (а не курсора).
Примечание. Удаление файла выполняется операционной системой, а не СУБД.
Поскольку удаление выполняется с помощью вызова xp_cmdshell, и потому что это процедура (нефункция и т. д.), вы не можете вызвать ее и передать содержимое таблицы.
Что вы можете сделать, это создать строку и выполнить ее.Но обратите внимание, в этой строке вы можете использовать не более 8000 символов.Как вы уже сказали, что у вас могут быть тысячи файлов, вы, несомненно, не поместите его в пределах 8000 символов.
Это означает, что вам понадобится цикл, несмотря ни на что.1014 *
Не красиво, а?
Что вы можете сделать, в зависимости от того, что нужно удалить, это использовать подстановочные знаки.Например:
EXEC xp_cmdshell 'DELETE C:\abc\def\*.txt'