我选择了' WITH'子句:
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2 from alias3
我尝试使用以下方法创建视图:
create view ex_view as (
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2
from alias3
)
当我尝试执行此create语句时,不支持使用WITH子句'
如何根据我的select语句创建视图?
答案 0 :(得分:9)
尝试删除括号:
create view ex_view as
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
from alias3;
答案 1 :(得分:4)
你不应该在查询周围有括号;将其更改为:
create view ex_view as (
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2
from alias3
)
例如:
create view ex_view as
with
alias1 as (select dummy from dual),
alias2 as (select dummy as col1, dummy as col2 from alias1),
alias3 as (select col1, col2 from alias2)
select col1,col2
from alias3;
View ex_view created.
查询周围带括号的相同构造得到ORA-32034:也不支持使用WITH子句。
如果您实际上并未在多个查询级别中使用任何子查询,那么“常见”和“#”公共表格表达式的一部分'并非真正相关 - 您可以使用内联视图:
create view ex_view as
select alias3.col1, alias3.col2
from (
select col1, col2
from (
select dummy as col1, dummy as col2
from (
select dummy from dual
) alias1
) alias2
) alias3;
但是with
子句是有效的,并且通常更容易阅读和维护。
答案 2 :(得分:0)
有没有一种方法可以创建带有“ WITH FUNCTION”子句的视图。
CREATE OR REPLACE VIEW test$v AS
WITH
FUNCTION with_function(p_id IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN p_id;
END;
SELECT with_function(dummy) AS dummy
FROM dual;
/
这会产生一个错误:
ORA-06553: PLS-103: Encountered the symbol "end-of-file"