shell - t-sql (SQL Server) 使用用户定义函数检查文件或目录是否存在的解决方案
问题描述
我读了很多帖子,试图找到一个解决方案来编写一个函数来确定一个文件是否存在,或者至少它所在的目录是否有效。我所做的研究是使用 udf 中不允许的 INSERT INTO 临时表之类的解决方案,所以我不得不找到另一个解决方案,我想出了一些使用检查文件存在和命令行 shell 脚本来检查目录的组合。除非有人有更好的主意?
CREATE FUNCTION dbo.fn_FileExists(@path varchar(512))
RETURNS INT --1 => File Exists, 2 => Directory Exists, 3 => Directory Does Not Exist
AS
BEGIN
DECLARE @result INT
EXEC master.dbo.xp_fileexist @path, @result OUTPUT
IF @result <> 1
BEGIN
SET @path = 'IF EXIST "' + SUBSTRING(@path, 1, LEN(@path) - CHARINDEX('\', REVERSE(@path))) + '" (echo 1)'
exec xp_cmdshell @path
SET @result = CASE WHEN @@ROWCOUNT = 1 THEN 3 ELSE 2 END
END
RETURN @result
END