错误信息为:“无法为实体化视图设置on commit刷新属性”,去掉refresh force on commit后,继续错误:“不能从复杂查询中创建一个可快速刷新的实体化视图”,有没有什么变通的办法?straggc是自定义函数。create MATERIALIZED view scydtsgdjs2 refresh force on commit as
select a.STOREID
,a.ngrq
,a.xbsj
,a.dzrxm
,a.pbrxm
,a.cjrxm
,a.jdrxm
,a.ygzl
,b.wjz
,b.wjnf
,b.wjh
,b.bt
,b.mj
,b.hj
,b.ztc
,b.fwdwmc
,b.fwsj
,b.zsdwlist
,b.csdwlist
,c.wjm as tab514wjm
,straggc(d.Wjm) tab512wjm
,straggc(t.wjm) tab513wjm
,straggc(e.handlerfullname) handlerfullname
,straggc(e.receiver) receiver
from tab501 a,tab511 b,tab514 c,tab512 d,tab513 t,tab3102 e
where a.wj = concat('511.',b.storeid)
and a.qb = concat('514.',c.storeid)
and d.relateddocstoreid = b.storeid
and t.relateddocstoreid = b.storeid
and e.TARGETDOCID = concat('501.',a.storeid)
group by a.STOREID
,a.ngrq
,a.xbsj
,a.dzrxm
,a.pbrxm
,a.cjrxm
,a.jdrxm
,a.ygzl
,b. wjz
,b.wjnf
,b.wjh
,b.bt
,b.mj
,b.hj
,b.ztc
,b.fwdwmc
,b.fwsj
,b.zsdwlist
,b.csdwlist
,c.wjm
select a.STOREID
,a.ngrq
,a.xbsj
,a.dzrxm
,a.pbrxm
,a.cjrxm
,a.jdrxm
,a.ygzl
,b.wjz
,b.wjnf
,b.wjh
,b.bt
,b.mj
,b.hj
,b.ztc
,b.fwdwmc
,b.fwsj
,b.zsdwlist
,b.csdwlist
,c.wjm as tab514wjm
,straggc(d.Wjm) tab512wjm
,straggc(t.wjm) tab513wjm
,straggc(e.handlerfullname) handlerfullname
,straggc(e.receiver) receiver
from tab501 a,tab511 b,tab514 c,tab512 d,tab513 t,tab3102 e
where a.wj = concat('511.',b.storeid)
and a.qb = concat('514.',c.storeid)
and d.relateddocstoreid = b.storeid
and t.relateddocstoreid = b.storeid
and e.TARGETDOCID = concat('501.',a.storeid)
group by a.STOREID
,a.ngrq
,a.xbsj
,a.dzrxm
,a.pbrxm
,a.cjrxm
,a.jdrxm
,a.ygzl
,b. wjz
,b.wjnf
,b.wjh
,b.bt
,b.mj
,b.hj
,b.ztc
,b.fwdwmc
,b.fwsj
,b.zsdwlist
,b.csdwlist
,c.wjm
create MATERIALIZED view scydtsgdjs2 refresh complete as
so,你可以选择下别的方法刷新你的视图。最后的方法可以使用job
以下是Oracle创建物化视图(Materialized View,以下简称MV)时的常用语法,各参数的含义如下:1.refresh [fast|complete|force] 视图刷新的方式:
fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内,主表变化过的数据.为了记录这种变化,建立增量刷新物化视图还需要一个物化视图日志表。create materialized view log on (主表名)。
complete:全部刷新。相当于重新执行一次创建视图的查询语句。
force: 这是默认的数据刷新方式。当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。2.MV数据刷新的时间:
on demand:在用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)
on commit:当主表中有数据提交的时候,立即刷新MV中的数据;
start ……:从指定的时间开始,每隔一段时间(由next指定)就刷新一次;