a--判断文件是否存在,存在则删除.
IF OBJECT_ID('p_QueryCheckFile','P') IS NOT NULL
DROP PROC p_QueryCheckFile
GO
CREATE PROC p_QueryCheckFile
@path NVARCHAR(1000),
@fname NVARCHAR(250)
AS
--检查文件是否已经存在
IF RIGHT(@path,1)<>'/'
SET @path=@path+'/'
IF OBJECT_ID('temp_xp_fileexist','U') IS NOT NULL
BEGIN
DROP TABLE temp_xp_fileexist
END
CREATE TABLE temp_xp_fileexist(a BIT,b BIT,c BIT)
DECLARE @sql NVARCHAR(1000)
SET @sql=@path+@fname
INSERT INTO temp_xp_fileexist
EXEC master..xp_fileexist @sql
/*
xp_fileexist 返回的三个列, 分别代表
文件已存在 文件是目录 父目录已存在
----- ----- ------
0 0 1
*/
IF EXISTS(SELECT 1 FROM temp_xp_fileexist WHERE a=1)
--文件已经存在
BEGIN
DECLARE @del NVARCHAR(200)
SELECT @del ='del '+@sql
EXEC master..xp_cmdshell @del
PRINT '相关文件已删除!'
END
ELSE IF EXISTS(SELECT 1 FROM temp_xp_fileexist WHERE b=1)
BEGIN
PRINT '存在文件目录!'
END
ELSE IF EXISTS(SELECT 1 FROM temp_xp_fileexist WHERE b=1)
BEGIN
PRINT '存在文件父目录!'
END
ELSE
PRINT '您所指定的文件不存在!'
GO
EXEC p_QueryCheckFile 'E:/soft/','test.rar'
/*
output
--------------
NULL
(1 行受影响)
相关文件已删除!
*/