我目前正在尝试创建一个存储过程来检查文件是否存在,如果是,那么它会再运行一些代码,如果没有的话。它停止了。
所以使用exec master..xp_fileexist @FileName
返回
File Exists| File is a Directory| Parent Directory Exists
1| 0| 1
我无法弄清楚语法或设置将存储过程放入IF EXISTS
语句
IF EXISTS (
exec master..xp_fileexist @FileName
)
BEGIN
select 'File is there'
END
ELSE
BEGIN
select 'File is not there'
END
以上不起作用,有人能把我放在正确的道路上吗?
答案 0 :(得分:2)
declare @result as int
declare @path as nvarchar(50)
--set your path
set @path= 'C:\'
EXEC master.dbo.xp_fileexist @path, @result OUTPUT
if @result=1
print 'found'
else
print 'not found'
答案 1 :(得分:1)
我能想到的最佳方法是使用OPENROWSET
并使用存储过程的结果填充临时表。但是传递一个参数很棘手但是这个链接应该让你开始正确的方向
http://sqlserverplanet.com/tsql/insert-stored-procedure-results-into-table
填充表格后,只需使用正常的IF EXISTS
查询
答案 2 :(得分:1)
xp_fileexists
始终返回结果。
因此,您不想检查结果是否存在,您想检查过程调用的结果。
要获取过程调用的结果,可以使用insert... exec
构造
declare @t table (fileexists bit, fileisdirectory bit, parentdirectoryexists bit)
insert @t
exec master..xp_fileexist 'c:\windows\explorer.exe'
if (exists (select * from @t where fileexists=1))
begin
select 'file is there'
end
答案 3 :(得分:0)
请按照以下步骤操作:
MyPc\Sqlexpress
)完成此操作后,请再次检查您的代码。它应该工作。