誰かがオラクルの階層クエリでnocycleとconnectbyroot句の使用を説明できますか?また、「start with」を使用しない場合、行を取得する順序は何ですか?つまり、「startwith」を使用しない場合は多くを取得します多くの行、誰でもnocycleを説明し、単純なempテーブルを使用してrootで接続できます(最初とはどのように異なりますか?)、助けてくれてありがとう
16201 次
2 に答える
7
データにループがある場合 (A -> B -> A -> B ...)、ORA-01436: CONNECT BY loop in user data
階層クエリを実行すると、Oracle は例外をスローします。NOCYCLE
このようなループが存在する場合でも、Oracle に行を返すように指示します。
CONNECT_BY_ROOT
ルート要素へのアクセスを提供します。クエリ内のいくつかの層も含まれます。HR スキーマの使用:
select level, employee_id, last_name, manager_id ,
connect_by_root employee_id as root_id
from employees
connect by prior employee_id = manager_id
start with employee_id = 100
LEVEL EMPLOYEE_ID LAST_NAME MANAGER_ID ROOT_ID
---------- ----------- ------------------------- ---------- ----------
1 100 King 100
2 101 Kochhar 100 100
3 108 Greenberg 101 100
4 109 Faviet 108 100
...
ここでは、従業員 100 から始めて、彼の従業員を探し始めていることがわかります。オペレーターは、CONNECT_BY_ROOT
King の employee_id に 4 レベル下でもアクセスできるようにします。私は最初、この演算子が「ルート要素で接続する」か何かを意味すると思って、非常に混乱しました。「CONNECT BY 句のルート」のようなものと考えてください。
于 2012-02-25T23:14:13.513 に答える