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

posted @ 2013-08-06 16:02  小白快跑  阅读(805)  评论(0编辑  收藏  举报