2012-12-07 77 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

相關問題