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

Oracle で再帰呼び出しを実行する別の方法があります。WITH クラスを使用すると、作業を実行できます

于 2013-06-16T08:25:07.430 に答える