--这个是查询某节点所有上级的例子
--sys_connect_by_path(folder,'-->') AS allPath
WITH tbFolder AS
  ( SELECT 1 AS orgcode, '根目录' AS folder, 0 AS parentorgcode FROM dual
  UNION ALL
  SELECT 2, '第一级A', 1 FROM dual
  UNION ALL
  SELECT 3, '第一级B', 1 FROM dual
  UNION ALL
  SELECT 4, '第二级A', 2 FROM dual
  UNION ALL
  SELECT 5, '第二级B', 2 FROM dual
  UNION ALL
  SELECT 6, '第三级A', 4 FROM dual
  UNION ALL
  SELECT 7, '第三级B', 5 FROM dual
  )
SELECT t.orgcode,
  t.folder,
  t.parentorgcode,
  sys_connect_by_path(folder,'-->') AS allPath
FROM tbFolder t
  START WITH orgcode       = 1
  CONNECT BY prior orgcode = parentorgcode

解决方案 »

  1.   

    不知道你要的是不是这个,先贴出来
    with test
    as 
    (
    select 1 as id , 0 as gid from dual 
    union all 
    select 2 as id , 1 as gid from dual 
    union all 
    select 3 as id , 0 as gid from dual 
    union all 
    select 4 as id , 0 as gid from dual 
    union all 
    select 5 as id , 2 as gid from dual 
    union all 
    select 6 as id , 2 as gid from dual 
    union all 
    select 7 as id , 3 as gid from dual 
    )
    select * from 
    (
     select sys_connect_by_path(id,'>') as level from test
     start with id is not null connect by prior id = gid 
    )
    where level like '%'||&value||'%'
    value赋值 5 出来结果
    ---------------
    >1>2>5
    >2>5
    >5