CREATE PROCEDURE SearchFile_InAllDirectories
@SearchFile VARCHAR(100)
DECLARE @BasePath VARCHAR(1000),
@Path VARCHAR(1000),
@FullPath VARCHAR(2000),
@Id INT;
SET @SearchFile = 'test2019.txt'
CREATE TABLE tmp_BasePath
(
basePath VARCHAR(100)
);
INSERT INTO tmp_BasePath (basePath)
VALUES ('\\Path1'), ('\\Path1\Images_5'),
('\\Path3\Images_4'), ('\\basketballfolder\2017_Images'),
('\\basketballfolder\2017_Images')
CREATE TABLE tmp_DirectoryTree
(
id INT IDENTITY(1,1),
subdirectory VARCHAR(512),
depth INT,
isfile BIT,
fullpath VARCHAR(500)
);
DECLARE basePath_results CURSOR FOR
SELECT bp.basePath
OPEN basePath_results
FETCH NEXT FROM basePath_results into @BasePath
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO tmp_DirectoryTree (subdirectory, depth, isfile)
EXEC master.sys.xp_dirtree @BasePath, 0, 1;
FETCH NEXT FROM basePath_results INTO @Basepath
END
CLOSE basePath_results;
DEALLOCATE basePath_results;
END
Я создаю хранимую процедуру, которая проверяет, находится ли файл, переданный в качестве параметра, в одной из жестко закодированных папок.
Например, если я передамфайл с именем «test2019.txt», хранимая процедура должна проверить, существует ли этот файл в папке.Если да, верните true и укажите путь к файлу.
По сути, я просто хочу проверить, существует ли файл в текущем каталоге, если да, верните мне полный путь.
Сейчас я могу использовать курсор для динамического получения путей к папкам.,Теперь просто нужен способ проверить, существует ли файл в пути к папке, и вернуть полный путь.
Пожалуйста, смотрите код.Я надеюсь это имеет смысл.Спасибо за помощь.
Я использую SQL Server 2017.