Oracle PL / SQL程序查找关系

时间:2014-05-22 18:12:43

标签: sql oracle plsql

我试图找到两个人之间的关系。输入将是' 3.2,3.2.1',输出应该是父亲的第一个弟弟的第二个孩子的第一个儿子"父亲的父亲的第一个儿子" #34 ;.我为所有父亲和兄弟关系创建了两个表,我为儿子创建了另一个表。

我写了一个程序来找到这种关系。我走错了,我无法找到。需要帮助。

我写的程序是

create procedure Find_Relation ( path IN varchar2 )
as
Sol varchar2(500);
var1 varchar2(50);
i number; 

Begin
i:=1;
while(i< instr(path,','))
Loop
Select relation into var1 from Rel_Tb_Father where id=substr(Path,i,3);
Sol := Sol ||var1||'s';
i:=i+2;
End Loop;
Select relation into var1 from Rel_Tb_Father where id=substr(Path,instr(path,',')-1,3);
Sol := Sol ||var1||'s';

i:=instr(path,',')+1;
while(i> instr(path,',') and i<length(path))
Loop
Select relation into var1 from Rel_Tb_Son where id=substr(Path,i,3);
Sol := Sol ||var1||'s';
i:=i+2;
End Loop;
Select relation into var1 from Rel_Tb_Son where id=substr(Path,length(Path)-3);
Sol := Sol ||var1||'s';
dbms_output.put_line(Sol);

End;
/

0 个答案:

没有答案