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