相关疑难解决方法(0)

带OPTION的无限循环CTE(maxrecursion 0)

我有CTE查询,上面有大量记录.以前它工作得很好.但最近,它给一些成员抛出了错误

声明终止.在语句完成之前,最大递归100已用尽.

所以我把OPTION (maxrecursion 0)或者OPTION (maxrecursion 32767)放在我的查询上,因为我不想限制记录.但是,结果是查询需要永远加载.我该如何解决这个问题?

这是我的代码:

with cte as(
-- Anchor member definition
    SELECT  e.SponsorMemberID , e.MemberID, 1 AS Level
    FROM tblMember AS e 
    where e.memberid = @MemberID

union all

-- Recursive member definition
    select child.SponsorMemberID , child.MemberID, Level + 1
    from tblMember child 

join cte parent

on parent.MemberID = child.SponsorMemberID
)
-- Select the CTE result
    Select distinct a.* 
    from cte a
    option (maxrecursion 0)
Run Code Online (Sandbox Code Playgroud)

编辑:删除不必要的代码,以便于理解

已解决:所以问题不是来自maxrecursion.它来自CTE.我不知道为什么,但可能它包含任何赞助商周期:A - > …

sql-server common-table-expression sql-server-2008

7
推荐指数
1
解决办法
5万
查看次数