我不知道你的表结构,给你个例子,可以直接将你的表里的记录排列成树形。 SELECT level,parent_id,child_id FROM yourtable START WITH parent_id=1 CONNECT BY PRIOR child_id=parent_id ;其中parent_id相当于上级单位的id,child_id是下级单位的id,level是Oracle提供的,你可以利用来区分当前记录是位于第几级。START WITH parent_id=1 中的1 可以是任意指定值。
表的字段如下: DeptId DeptName UpperDeptId HasSubDept
SELECT level,DeptId, DeptName, UpperDeptId,HasSubDept FROM yourtable START WITH deptid=1 CONNECT BY PRIOR UpperDeptId =deptid;level = 1 的就是最上级的单位。
你所谓的递归是SQL语句的递归,也就是执行很多条SQL语句达到你的目的吗?为什么不直接用Oracle提供的递归语句, connect by + start with ?
CONNECT BY PRIOR child_id=parent_id ;其中parent_id相当于上级单位的id,child_id是下级单位的id,level是Oracle提供的,你可以利用来区分当前记录是位于第几级。START WITH parent_id=1 中的1 可以是任意指定值。