Да, начиная с Oracle 11g Выпуска 2, вы можете использовать рекурсивные CTE вместо иерархических запросов старого стиля. Более того, рекурсивные CTE гораздо более гибкие, так как позволяют обходить любой график.
Например:
create table t (
id number(6),
parent number(6)
);
insert into t (id, parent) values (1, null);
insert into t (id, parent) values (22, 1);
insert into t (id, parent) values (45, 22);
insert into t (id, parent) values (32, 45);
with n (id, parent, lvl) as (
select id, parent, 1 from t where id = 45
union all
select t.id, t.parent, n.lvl + 1
from n
join t on t.id = n.parent
)
select * from n order by lvl
Результат:
ID PARENT LVL
-- ------ ---
45 22 1
22 1 2
1 <null> 3