Oracle PL/SQL之WITH查询
2011-08-29 22:54
387 查看
为什么要用WITH?
1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用;
2. WITH查询类似将查询结果保留到用户临时表里,在大的复杂查询中可以减少IO,有一定的性能优化作用。
WITH查询有何限制与特性?
1. 如果当前schema下有与WITH查询别名相同的表,查询中WITH查询生成的表优先;
2. 只能用于select 语句;
3. WITH可包含一个或多个查询;
4. WITH查询可被其它查询或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之WITH查询
- Oracle PL/SQL之WITH查询
- Oracle PL/SQL之WITH查询
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
- Oracle PL/SQLWarning: Function created with compilation errors.
- Oracle EBS - SQL&PL/SQL: 查询Profile设置,具体到Site、App、Resp、User
- oracle——pl/sql 查询中文乱码
- [bbk4979]第06集 - Chapter 04- Interacting with Oracle Database Server:SQL Statements in PL/SQL Programs(01)
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程五 子查询
- PL/SQL Oracle 用sql query查询,中文字段内容显示异常的处理
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
- oracle 数据库的管理工具 PL/SQL_Developer 的简易使用 与Java 连接并查询显示出数据
- 如何用SQL查询语句获取Oracle表 树形结构的记录(PL/SQL )
- Oracle PL/SQL:CREATE TABLE statement: create a table with primary key.
- oracle 定长字段查询问题 ,ibatis 与pl/sql查询的char类型字段查询不同
- Oracle PL/SQL之递归查询 - CONNECT BY PRIOR
- ORACLE PATCH 版本的查询 PL/SQL
- Data Types with Different Maximum Sizes in oracle PL/SQL and SQL
- oracle 定长字段查询问题 ,ibatis 与pl/sql查询的char类型字段查询不同
- Oracle PL/SQL之递归查询 - CONNECT BY PRIOR