0

我需要以递归方式选择所有引用我的表的表。

因此,假设我需要为book_author表执行此任务。像这样的查询:

select distinct sys_connect_by_path(a.table_name, '/'), level
  from user_constraints a
  join user_constraints b
    on a.table_name = b.table_name
 start with a.table_name = 'BOOK_AUTHOR'
connect by prior a.r_constraint_name = b.constraint_name

给我这个结果

/BOOK_AUTHOR/D_BOOK/JOBS/CITY/COUNTRY/REGIONS   6
/BOOK_AUTHOR/D_BOOK/JOBS/CITY/COUNTRY   5
/BOOK_AUTHOR/D_BOOK/JOBS/CITY   4
/BOOK_AUTHOR/D_BOOK/D_STYLE 3
/BOOK_AUTHOR/D_BOOK/JOBS    3
/BOOK_AUTHOR/D_AUTHOR   2
/BOOK_AUTHOR/D_BOOK 2
/BOOK_AUTHOR    1

,这几乎是我所需要的。

您能否帮助我在使用 connect by 但在递归函数调用的帮助下获得相同的结果?

PS不要与表格书籍,工作,国家等的神秘联系相混淆 - 我一直在玩这些表格中的外键 - 因为我想让我的层次结构真的很深

4

1 回答 1

1

there is another way to perform recursive calls in oracle , using the WITH clase can do the work : http://www.dba-oracle.com/t_recursive_subquery_factoring_with_clause.htm

于 2013-06-16T08:25:07.430 回答