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。
产品部下只有一个子级。
这个该怎么破?
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
笔误。。。问题依旧。。
最好别用递归,递归只支持 sql server。
只是遇到问题了,实际项目中并没有使用这种方法,这个问题是。。。。
没有看到SubLevel或TreeLevel这样的字段,如果没有一个字段标志是第几级,那就无法限定递归的循环次数。
参看这里
http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html
可以在查询后面加上Option(MAXRECURSION 5)表示5层就不再继续查询。