看看使用CTE。
喜歡的東西
DECLARE @Directory Table(
DirId INT,
ParentId INT
)
DECLARE @Files Table(
FileId INT,
DirId INT
)
INSERT INTO @Directory SELECT 1, NULL
INSERT INTO @Directory SELECT 2, 1
INSERT INTO @Directory SELECT 3, 1
INSERT INTO @Directory SELECT 4, 2
INSERT INTO @Files SELECT 1, 1
INSERT INTO @Files SELECT 2, 1
INSERT INTO @Files SELECT 3, 2
INSERT INTO @Files SELECT 4, 2
INSERT INTO @Files SELECT 5, 3
INSERT INTO @Files SELECT 6, 3
INSERT INTO @Files SELECT 7, 4
INSERT INTO @Files SELECT 8, 4
;WITH Directories AS (
SELECT DirId,
ParentID
FROM @Directory
WHERE DirId = 2
UNION ALL
SELECT d.DirId,
d.ParentID
FROM @Directory d INNER JOIN
Directories p ON d.ParentId = p.DirId
)
SELECT *
FROM Directories d INNER JOIN
@Files f ON d.DirId = f.DirId
考慮使用[遞歸CTE查詢](http://msdn.microsoft.com/en-us/library/ms186243.aspx),也許。 – 2010-12-09 08:38:14
你想通過SQL Server訪問文件系統?這通過應用程序代碼更容易,更容易完成。你能解釋在SQL中如何解決這個問題嗎? – Oded 2010-12-09 08:39:08
爲什麼你要使用存儲過程來完成一項明顯更適合在C#等代碼中執行的任務? – 2010-12-09 08:39:13