在Oracle 11gR2之前,一般用start with和connect by来递归的显示树形结构,请看如下脚本

select lpad(' ',2*level-1,' ') || ename ename,empno,mgr
    from emp
    where empno is not null
    connect by prior empno = mgr
    start with mgr is null

ENAME                    EMPNO        MGR
-------------------- ---------- ----------
 KING                      7839
  JONES                  7566      7839
    SCOTT                7788      7566
      ADAMS              7876      7788
    FORD                  7902      7566
      SMITH              7369      7902
  BLAKE                  7698      7839
    ALLEN                7499      7698
    WARD                  7521      7698
    MARTIN                7654      7698
    TURNER                7844      7698
    JAMES                7900      7698
  CLARK                  7782      7839
    MILLER                7934      7782
 
从11gR2开始,可以用RSF来实现
 
with sun(lvl,ename,empno,mgr) as
(select 1,lpad(' ',2*1-1,' ') || ename ename,empno,mgr from emp where mgr is null
union all
select sun.lvl+1,lpad(' ',2*lvl-1,' ') || d.ename ename,d.empno,d.mgr
from sun, emp d
where sun.empno = d.mgr)
select lvl,ename,empno,mgr from sun

LVL ENAME                    EMPNO        MGR
---------- -------------------- ---------- ----------
        1  KING                      7839
        2  JONES                    7566      7839
        2  BLAKE                    7698      7839
        2  CLARK                    7782      7839
        3    ALLEN                    7499      7698
        3    WARD                    7521      7698
        3    MARTIN                7654      7698
        3    SCOTT                    7788      7566
        3    TURNER                  7844      7698
        3    JAMES                  7900      7698
        3    FORD                    7902      7566
        3    MILLER                  7934      7782
        4      SMITH                7369      7902
        4      ADAMS                7876      7788

观察一下上述两份输出,用传统的start with和connect by,结果顺序类似于对emp表的前序遍历(preorder traversal);而使用RSF,则是对emp表的层次遍历(level traversal)

Oracle 11g R2 RSF(Recurive Subquery factoring)相关推荐

  1. Oracle 11gR2 RSF(Recurive Subquery factoring)

    在Oracle 11gR2之前,一般用start with和connect by来递归的显示树形结构,请看如下脚本 select lpad(' ',2*level-1,' ') || ename en ...

  2. oracle schema与mysql_Oracle数据库之Oracle 11g R2 用户与模式(schema)

    本文主要向大家介绍了Oracle数据库之Oracle 11g R2 用户与模式(schema),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 创建用户的语法: Create u ...

  3. oracle读书笔记之Oracle 11g R2 DBA操作指南(前三章)

    Oracle 11g R2 DBA操作指南是我学习的第一本讲述oracle数据库知识的书籍,在此记录下自己的学习笔记,对于书中的知识点本人通过实际操作进行验证. 1.Oracle数据库基础 1.1.关 ...

  4. windows 2008+Oracle 11g R2 故障转移群集配置

    2019独角兽企业重金招聘Python工程师标准>>> 故障转移群集环境介绍: 1.1 逻辑拓扑图 1.2 服务器A OS:win 2008 entprise sp1 ServerN ...

  5. Oracle 11G R2 RAC中的scan ip 的用途和基本原理【转】

    Oracle 11G R2 RAC增加了scan ip功能,在11.2之前,client链接数据库的时候要用vip,假如你的cluster有4个节点,那么客户端的tnsnames.ora中就对应有四个 ...

  6. centos5.5上安装oracle 11g R2[转发-参考用]

    centos5.5上安装oracle 11g R2[转发-参考用] + ------------------ CentOS 5.5上安装配置oracle 11g R2  --------------- ...

  7. Oracle 11g R2 RAC 高可用连接特性

    转自-阿里巴巴许春值 1.scan概念 什么叫 SCAN,SCAN (Single Client Access Name) 是 Oracle 从11g R2 开始推出的,客户端可以通过 SCAN 特性 ...

  8. CentOS 5.10安装Oracle 11G R2

    操作系统:CentOS 5.10 64位 数据库:Oracle 11G R2(版本号为11.02) 安装操作系统的时候,注意交换分区的大小不得低于2G 1.同步时钟及修改/etc/hosts yum ...

  9. ORACLE 11g R2 RAC群集堆栈的关闭过程分析

    下面的操作是一套基于Redhat 5.4 上面安装的 oracle 11g R2 11.2.0.3  rac来执行的. 通过观察命令的输出信息,我们可以分析出,oracle grid堆栈的关闭过程. ...

最新文章

  1. 【建模必备】遗传算法的基本原理与步骤(适应度函数与适应度分配)
  2. UE4全景插件Nvidia Ansel Photography
  3. dotnetConf 2016 线上虚拟大会
  4. Springboot01创建第一个程序
  5. 如何查看光驱硬盘托架的尺寸_「二次利用」没想到废光驱电机还可以这样利用...
  6. 中介者模式php,PHP设计模式之中介者模式
  7. ENVI遥感影像镶嵌
  8. 初使用tbs的x5内核所遇到的坑,初学者如何第一次跑起x5内核
  9. 微信好友保存在服务器,微信好友数据备份好,封号也不怕!
  10. Android音频播放器
  11. web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作...
  12. Swift忽略大小写搜索子字符串的三种方法及性能对比
  13. linux 添加动态链接库的方法
  14. git config本地信息配置
  15. 解决台式机突然卡死的问题
  16. UI设计规范技巧——切图格式
  17. 【文本三剑客之一sed】
  18. STM32的引脚模式
  19. 浏览器(Browser) WebSql 学习笔记
  20. 易语言 超级列表框 表头禁止来回拖动

热门文章

  1. Automader 使用教程 - 01 你好,左右抽
  2. Linux:UID和EUID
  3. VMware® Workstation 16 Pro创建WIN7虚拟机教程
  4. html跳转到关注的微信公众号,手机浏览器一键跳转微信公众号关注的方法
  5. c语言lst文件,Keil C51 之LST文件
  6. Emacs是一种信仰!世界最强编辑器介绍
  7. mac下chrome插件安装位置
  8. 蔡康永般“好好说话”?百度发起猛攻 推249元小度音箱
  9. android 程序运行,Android如何保持程序一直运行
  10. 轻快PDF阅读器在线使用方法