0

我可能对此很遥远,但我正在尝试编写一个将给定孩子的所有祖先插入新表的过程。这是我所拥有的:

create or replace procedure ancestors(childIn IN varchar2)
is
begin
insert into AncestorTable(Parent)
select Parent from Family
where Child=childIn;
ancestors(Parent);
end;
/

我知道这ancestors(Parent)很遥远,但我想知道是否有一种简单的方法可以在不进入游标的情况下做到这一点。如果我需要一个光标,我可以得到一些关于如何做到这一点的指导吗?感谢您的任何见解。

4

1 回答 1

2

尝试分层查询

就像是

select Parent 
  from Family
 start with Child=childIn
connect by prior Parent = Child;

这是一个sqlFiddle

这样您就可以进行一次插入,并且不需要递归。

insert into AncestorTable(Parent)
(select Parent 
   from Family
 start with Child=childIn
  connect by prior Parent = Child);
于 2013-10-15T19:43:43.873 回答