在PL / SQL中创建某种记录

时间:2011-04-23 20:45:09

标签: oracle recursion plsql dependencies hierarchical-data

我正在尝试在PL / SQL中编写一个类别的递归函数。

问题是:

所以说表A有行:

 {B, C},
 {C, D},
 {C, F},
 {D, E},
 {E, F}

直接或间接地返回B所依赖的所有内容。

元组{B,C}意味着B依赖于C,C依赖于D,依此类推。 当给定B时,该函数将返回一个光标或会产生的东西:{C,D,F,E} 请注意,简单循环和仅打印值可能会产生重复结果(在本例中为E)。

我是PL / SQL的新手,我真的想不出办法做到这一点。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

假设表格如下:

ID    PARENT_ID
---   ---------
B     C
C     D
C     F
D     E
E     F

为什么不使用分层查询,如:

select distinct parent_id
  from (select parent_id
          from my_table
         start with ID = 'B'
               connect by nocycle id = prior parent_id
       )
 order by parent_id

这个SQL未经测试,但它应该是正确方向的一个点;如果你需要的话,你的函数可以返回那个光标,如果没有,你的函数可以返回一个值数组。