首页 > 解决方案 > 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

标签: shelltsqlsql-server-2008

解决方案


推荐阅读