首页 新闻 会员 周边 捐助

sql cte 表达式问题

0
悬赏园豆:15 [已关闭问题] 关闭于 2013-09-25 09:46
    WITH    DepartMent ( Dep_ID, UDep_ParentID, Dep_Name )
              AS ( SELECT   per.UDep_ID ,--主键id
                            per.UDep_ParentID ,--父级id
                            UDep_Name--类别名称
                   FROM     dbo.Per_Department per
                   WHERE    --per.UDep_ID = per.UDep_ParentID 条件1
                            per.UDep_Name = '产品部'--条件2
                   UNION ALL
                   SELECT   perchild.UDep_ID ,
                            perchild.UDep_ParentID ,
                            perchild.UDep_Name
                   FROM     dbo.Per_Department perchild
                            INNER JOIN DepartMent dep ON perchild.UDep_ParentID = dep.Dep_ID
                 )
        SELECT  *
        FROM    DepartMent

不管是用条件1,还是条件2 都会 

消息 530,级别 16,状态 1,第 1 行
语句被终止。完成执行语句前已用完最大递归 100。

产品部下只有一个子级。

这个该怎么破?

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2013-09-10 11:57
< >
分享
所有回答(3)
0
WITH    DepartMent ( Dep_ID, UDep_ParentID, Dep_Name )
              AS ( SELECT   per.UDep_ID ,--主键id
                            per.UDep_ParentID ,--父级id
                            UDep_Name--类别名称
                   FROM     dbo.Per_Department per
                   WHERE    --per.UDep_ID = per.UDep_ParentID 条件1
                            per.UDep_Name = '产品部'--条件2
                   UNION ALL
                   SELECT   perchild.UDep_ID ,
                            perchild.UDep_ParentID ,
                            perchild.UDep_Name
                   FROM     dbo.Per_Department perchild
                            INNER JOIN DepartMent dep ON perchild.UDep_ParentID = dep.Dep_ID
                 )
        SELECT  *
        FROM    DepartMent
清海扬波 | 园豆:825 (小虾三级) | 2013-09-10 11:59

笔误。。。问题依旧。。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2013-09-10 13:27
0

最好别用递归,递归只支持 sql server。

geass.. | 园豆:1821 (小虾三级) | 2013-09-10 16:12

只是遇到问题了,实际项目中并没有使用这种方法,这个问题是。。。。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2013-09-10 17:51
0

没有看到SubLevel或TreeLevel这样的字段,如果没有一个字段标志是第几级,那就无法限定递归的循环次数。

参看这里
http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html

可以在查询后面加上Option(MAXRECURSION 5)表示5层就不再继续查询。

邀月 | 园豆:25475 (高人七级) | 2013-09-11 12:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册