2012-12-07 75 views
7

我知道这个命令将创建一个目录:如何使用SQL Server检查目录是否存在?

EXEC master.sys.xp_create_subdir 'C:\testing\' 

但是我怎么检查是否“C:\测试\”存在?

IF EXISTS(... 
+0

............... –

+3

Google返回约54k结果.. [1](http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=105077) ,[2](http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/7a96e929-bddd-42e1-b2f7-88be3055b7c2),[3](http://www.bidn。 com/blogs/briankmcdonald/bidn-blog/1143/determine-if-directory-exists-using-xp_cmdshell) – Kermit

+7

不同意这种被封闭的建议。问题很明显 - 我检查了帮助中心,看看什么是合法的关闭原因,并没有找到与之相匹配的原因。这个问题虽然也许不是一个完整的代码段,但它足够清楚地理解这个问题:“我如何检查子目录是否存在,如果存在则执行它” – TDrudge

回答

15
CREATE TABLE ResultSet (Directory varchar(200)) 

INSERT INTO ResultSet 
EXEC master.dbo.xp_subdirs 'c:\' 

Select * FROM ResultSet where Directory = 'testing' 

将返回子目录的列表,那么你可以检查列表的内容。

+0

我该如何从这张表中选择寿?我跑了命令,我看到桌子,但我怎么去查询它? –

+0

谢谢,这就是我正在寻找的! –

+5

我建议使用临时表,所以你最终不会有一个静态的表。 CREATE TABLE #ResultSet(目录为varchar(200)) INSERT INTO #ResultSet EXEC master.dbo.xp_subdirs 'C:\' 是否存在(SELECT * FROM #ResultSet在Directory = '测试')开始 #在这里做的东西 结束 如果您需要在代码块中多次执行此操作,请在代码的最开始处创建临时表,然后在每次使用后将其截断 - 略微优化代码以避免每次重新分配。 – TDrudge

相关问题