PL / SQL:递归调用过程

时间:2013-10-15 19:38:22

标签: sql oracle plsql

我可能会对此感到茫然,但我正在尝试编写一个过程,将给定子项的所有祖先插入到新表中。这就是我所拥有的:

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)已经过时了,但我想知道是否有一种简单的方法可以在不进入游标的情况下完成此操作。如果我需要一个光标,我可以就如何做到这一点找到方向吗?感谢您的任何见解。

1 个答案:

答案 0 :(得分:2)

尝试hierarchical query

这样的东西
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);
相关问题