为什么要用WITH?1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用;2. WITH查询类似将查询结果保留到用户临时表里,在大的复杂查询中可以减少IO,有一定的性能优化作用。WITH查询有何限制与特性?1. 如果当前schema下有与WITH查询别名相同的表,查询中WITH查询生成的表优先;2. 只能用于select 语句;3. WITH可包含一个或多个查询;4. WITH查询可被其它查询或WITH查询引用。 示例:
- duzz$scott@orcl>select * from dept;
-
- DEPTNO DNAME LOC
- ---------- --------------- ----------
- 10 ACCOUNTING NEW YORK
- 20 RESEARCH DALLAS
- 30 SALES CHICAGO
- 40 OPERATIONS BOSTON
-
- Elapsed: 00:00:00.00
- duzz$scott@orcl>with dept as (select 1 a from dual) select * from dept;
-
- A
- ----------
- 1
-
- Elapsed: 00:00:00.00
- duzz$scott@orcl>with dept as (select 1 a from dual) delete from dept where a=1;
- with dept as (select 1 a from dual) delete from dept where a=1
- *
- ERROR at line 1:
- ORA-00928: missing SELECT keyword
-
-
- Elapsed: 00:00:00.01
- duzz$scott@orcl>with wt1 as (select 1 a, 2 b from dual), wt2 as (select 1 c,3 d from dual) select * from wt1,wt2 where wt1.a=wt2.c;
-
- A B C D
- ---------- ---------- ---------- ----------
- 1 2 1 3
-
- Elapsed: 00:00:00.00
- duzz$scott@orcl>with wt1 as (select 10 a, 2 b from dual), wt2 as (select deptno,loc from dept,wt1 where deptno=a) select loc from wt2;
-
- LOC
- ---------------------------------------
- NEW YORK
-
- Elapsed: 00:00:00.00
- duzz$scott@orcl>
Oracle PL/SQL之函数索引(Function-based indexes)使用示例Oracle PL/SQL之Flashback Table与外键约束相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)