获取所有子文件夹和文件的存储过程

时间:2016-07-16 18:21:55

标签: sql-server stored-procedures recursion parent-child

我在SQL Server数据库中有两个表,FolderFile

enter image description here

enter image description here

我需要一个存储过程来返回文件夹中的所有文件和文件夹。

示例:

 exec GetFileAndFolders @FolderID

 Declare @FolderID uniqueidentifier
 set @FolderID = 'b575050d-374b-e611-9d2c-000c29e7670f'

 ;WITH hierarchy_cte (ID, Name, ParentID) as
 (
     SELECT 
         e.folderId, e.name, e.parentId
     FROM 
         folder as e
     WHERE
         e.folderId = @FolderID

     UNION ALL

     SELECT 
         e.folderId, e.name, e.parentId
     FROM 
         folder as e
     INNER JOIN 
         hierarchy_cte as h ON h.ParentID = e.folderId
)
SELECT ID FROM hierarchy_cte

1 个答案:

答案 0 :(得分:1)

解决问题的另一种方法是将所有对象(文件和文件夹)放在一个表中;用一个属性来表示什么是文件夹。这就是Windows,Linux,Mac等文件系统处理问题的方式。

然后,您现有的代码将找到所有文件和文件夹,并附加一个属性(列)来表示文件夹。