Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当select查询返回oracle中的数据时才刷新的物化视图_Oracle_Oracle11g_Materialized Views - Fatal编程技术网

仅当select查询返回oracle中的数据时才刷新的物化视图

仅当select查询返回oracle中的数据时才刷新的物化视图,oracle,oracle11g,materialized-views,Oracle,Oracle11g,Materialized Views,我希望视图每周刷新一次,并且仅当vw_testdata视图中的数据可用时才刷新。也尝试使用触发器,但不起作用 是否可以刷新视图中可用的仅mv数据?如果vw_testdata是普通视图,则它是一个存储的查询,不包含任何数据。我想您应该关心的是——如果某个时候该查询没有获取任何内容,而您刷新了物化视图,那么您将丢失物化视图中的数据 如果是这样,请创建一个存储过程,例如 Create materialized view mv_testdata BUILD IMMEDIATE REFRESH FORCE

我希望视图每周刷新一次,并且仅当vw_testdata视图中的数据可用时才刷新。也尝试使用触发器,但不起作用

是否可以刷新视图中可用的仅mv数据?

如果vw_testdata是普通视图,则它是一个存储的查询,不包含任何数据。我想您应该关心的是——如果某个时候该查询没有获取任何内容,而您刷新了物化视图,那么您将丢失物化视图中的数据

如果是这样,请创建一个存储过程,例如

Create materialized view mv_testdata
BUILD IMMEDIATE
REFRESH FORCE
AS
SELECT * FROM VW_TESTDATA;
它检查vw_测试数据中是否存在任何内容;如果是,则刷新物化视图

现在计划每周执行该程序

create or replace procedure p_refresh as
  l_cnt number;
begin
  select max(1) 
    into l_cnt
    from vw_testdata
    where exists (select null from vw_testdata);

  if l_cnt = 1 then
     dbms_mview.refresh('mv_testdata');
  end if;
end;
/