Oracle 11g R2 RSF(Recurive Subquery factoring)
来源:互联网 发布:windows重启网络服务 编辑:程序博客网 时间:2024/06/06 12:41
在Oracle 11gR2之前,一般用start with和connect by来递归的显示树形结构,请看如下脚本
---------- -------------------- ---------- ----------
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)
来源自
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 nullunion allselect sun.lvl+1,lpad(' ',2*lvl-1,' ') || d.ename ename,d.empno,d.mgrfrom sun, emp dwhere sun.empno = d.mgr)select lvl,ename,empno,mgr from sunLVL 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)
来源自
0 0
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- Oracle 11gR2 RSF(Recurive Subquery factoring)
- Oracle 11g:Scalar Subquery expression Limitation
- WITH Clause : Subquery Factoring
- Oracle 10g R2升级到Oracle 11g R2
- Oracle 11g R2 安装
- 安装Oracle 11g R2
- oracle 11g R2卸载
- Oracle 11 g R2 软件
- Oracle 11g R2 安装
- Recursive Subquery Factoring (Recursive WITH)
- Windows server 2008 R2 安装 Oracle 11g R2 dataguard
- ubuntu10.04 安装oracle 11g r2
- ubuntu10.04 安装oracle 11g r2
- Linux安装 oracle 11g r2
- oracle 11g r2 Rac install
- Oracle 11g r2 下载地址
- 第十三周 项目五:字符串操作(1.3)
- 在项目中使用Liquibase
- Linux中的man手册
- [JavaScript]20款最优秀的JavaScript编辑器 哪家强你说了算!
- Linux-0.11内核源码分析系列:内存管理copy_page_tables()函数分析
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- ASP表单输入到HTML
- 十三周项目五
- oracle sql 优化
- 数据库的索引
- 实现java导出Excel表
- 工大培训——day5 C题 线段树变形应用
- 在Linux里设置环境变量的方法(export PATH)
- Mysql学习笔记-数据库事务