oracle中使用SQL递归语句的例子

转载自:http://database.51cto.com/art/201009/227393.htm

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 pa\'

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为C6000000000001下的所有子结点:

select * from comm_org_subjection a

start with a.org_C6000000000001\'

connect by prior a.org_subjection_id=a.father_org_id

3、递归查找子结点 org_id为C6000000000001下的所有父结点:

select org_id from comm_org_subjection a

start with a.org_C6000000000001\'

connect by prior a.father_org_id=a.org_subjection_id