oracle SQL再帰的使用詳細
oracleデータベースでSQL再帰文が必要なら、どう書きますか?ここでは、oracleでSQLを使った再帰文の例を紹介します。ご参考ください。例:
pid id
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
d d1
pid=a,
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
SQL :select parent,child from test start with pid='a'
connect by prior id=pid
Oracle SQL再帰的クエリ文:1、テーブル機構
SQL> desc comm_org_subjection
Name Null? Type
----------------------------------------- -------- ----------------------
ORG_SUBJECTION_ID NOT NULL VARCHAR2(32)
ORG_ID NOT NULL VARCHAR2(32)
FATHER_ORG_ID NOT NULL VARCHAR2(32)
LOCKED_IF NOT NULL VARCHAR2(1)
START_DATE NOT NULL DATE
END_DATE DATE
EDITION_NAMEPLATE NUMBER(8)
CODE_AFFORD_IF VARCHAR2(1)
CODE_AFFORD_ORG_ID NOT NULL VARCHAR2(32)
CODING_SHOW_ID NUMBER(8)
BSFLAG VARCHAR2(1)
MODIFI_DATE DATE
CREATOR_ID VARCHAR2(32)
CREATE_DATE DATE
CREATOR VARCHAR2(35)
2、再帰的に親のノードorg_を検索する。idはC 600000000000 01におけるすべてのサブノード:
select * from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.org_subjection_id=a.father_org_id
3、再帰的にサブノードorg_を検索する。idはC 600000000000 01の親のすべての結点です。
select org_id from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.father_org_id=a.org_subjection_id