2013-07-25 34 views
1

如何执行使用由WITH准备的数据的多个语句。 例如:WITH oracle中的多个语句

WITH t1 AS 
(
....using some table 
), 
t2 as 
(
....using t1 and some other tables 
), 
t3 as 
(
..using t1 and t2 and some other tables 
) 
statement 1; (let say this is using t1 and t2) 
statement 2; (let say this is using t2 and t3) 

如何在Oracle中执行此操作?

+1

WITH子句是声明的一部分。你在寻找类似VIEWs的东西吗?或者也许是临时表?或PLSQL集合? –

+0

不以这种方式工作 –

+0

WITH是SQL的一部分。 SQL没有“可执行语句”。 –

回答

0

例如:

-- Block With 
-------------------------------------------------------------------------------- 
with 
w1 as 
(
select 1 as id 
     , '123' as text 
from dual 
) 

, w2 as 
(
select w1.* 
from w1 
) 

, w3 as 
(
select w2.* 
from w2 
) 
-- End Block With 
-------------------------------------------------------------------------------- 

select * from w1, w2, w3; 
+0

如果我想在'select * from w1,w2,w3;' –

+0

之后添加'select * from w1'这样的其他语句,我认为这是不可能的。您只能在一个语句中使用'WITH'。你需要得到什么?也许有另一种方式。 –

2

甲子查询分解条款(WITH子句)是一个单一的查询,在那里它有效地充当单次使用的视图的一部分。如果您发现需要在多个查询的WITH子句中重复SELECT语句,则可能需要考虑在子查询因子分解子句中为每个SELECT定义视图以简化代码。分享并享受。

0

你可以子句中使用下面给出的以用于多台积木

WITH 
t1 
AS (
     SELECT column1, column2 
     FROM some_tables     
      ), 
t2 as 
(
     SELECT column4,column4 
     FROM some tables 
)     
SELECT column5,column6 --USE ALIAS OF THE ABOVE BLOCKS YOU HAVE CREATED DOWN AND USE THEM AND SELECT THE IN BASE QUERY 
      FROM 
      (
       SELECT column1 COLUMN 5,column2 COLUMN 6 
       FROM t1 a 
       union ALL 
       SELECT column3 COLUMN 5,column4 COLUMN 6 
       FROM t2 a 

       ) 

希望能帮助。