2011-04-23 67 views
1

我想在PL/SQL中編寫一個遞歸的排序函數。在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相當陌生,我不能真正想到這樣做的方法。

在此先感謝您的幫助!

回答

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的未經測試,但它應該是在正確的方向點;你的函數可以返回那個遊標,如果這是你需要的,或者如果沒有,則返回一個數組值。

+0

我還沒有嘗試過。但是,我開始考慮在Java中創建一個包裝程序來替代我這樣做... – 2011-04-25 07:37:22

+0

Java?嘆息,依賴關係的層次結構是需要的...... +1 – tbone 2011-04-25 13:11:40

+0

試過並努力!謝謝你,亞當! :) – 2011-04-26 01:59:08