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 に答える