返回表的递归存储过程

时间:2017-12-14 10:01:57

标签: sql sql-server stored-procedures

我有一个包含目录的表。每个目录都有一个parentid到其父文件夹。我需要创建一个获取目录ID的存储过程或函数,并递归返回其所有子目录。创建返回单个结果的递归函数/过程的正确方法是什么?对于所有不同的递归调用,结果需要是通用的,所以我猜它不能单独用于单个过程?您是否使用临时表,或将结果集传递给每个过程调用或?

enter image description here

如上所述,除了在IsMigrationRoot与null不同时断开递归执行之外,这几乎是一个anther的线程。以下工作:

CREATE PROCEDURE [dbo]。[GetDirectoriesToMigrate] (     @DirId uniqueidentifier ) 如             ;与CTE AS             (                          SELECT [DirectoryId],[ParentId],Name                          来自目录                          WHERE directoryid = @ DirId

                     UNION ALL

                     SELECT T1.[DirectoryId], T1.[DirectoryId], T1.Name
                     FROM Directories T1
                     INNER JOIN CTE T2 ON T1.[ParentId] = T2.[DirectoryId] where IsMigrationRoot is null
        )
        SELECT *
        FROM CTE 

GO

0 个答案:

没有答案