我有以下递归函数:
ALTER FUNCTION [dbo].[ListAncestors]
(
@Id int
)
RETURNS TABLE
As
RETURN
(
WITH cte As
(
SELECT
UserId,
ManagerId,
Forename,
Surname
FROM
dbo.Users
WHERE
UserId = @Id
UNION ALL
SELECT
T.UserID,
T.ManagerID,
T.Forename,
T.Surname
FROM
cte As C INNER JOIN dbo.Users As T
ON C.UserID = T.ManagerID
)
SELECT
Forename,
Surname
FROM
cte
);
基本上它的作用是返回指定用户以下的所有用户的名称(基于他们的 ID)。我想做的是修改这个函数并创建另一个函数来检查一个特定的用户ID是否是另一个的祖先。
我想签名看起来像:
CREATE FUNCTION IsAncestor(@Id int, @AncestorId int) RETURNS BIT