在Oracle数据库开发中有时候对临时数据的一些处理,但是这些数据不想放在table里面,而且cursor的灵活性又不是很好,这个时候可以考虑with as 了。
with as 是在内存总建立一个临时表, 可以对这个temp table里面的数据进行整理。
with test as
(select 1 from dual
union
select 2 from dual
union
select 3 from dual)
select * from test
得到一个temp table就可以对table的记录进行操作了, 例如邱平均数
with table1 as
(select 1 as a from dual
union
select 2 as a from dual
union
select 3 as a from dual)
select avg(a) from table1
还可以和现有的表进行联合查询。
由于with as 是内存在的table,所以还是比较快的。如果数据比较大的时候建议不要使用with as,不然的话变得很慢。