【发布时间】:2014-06-26 13:00:44
【问题描述】:
我有很多程序做同样的事情: 他们刷新物化视图并检查计数是否不为 0,然后将该数据推送到生产表中。这是每个人所做的框架,唯一改变的是物化视图的名称。我考虑过创建一个函数,以 MV 的名称对其进行处理,但它不起作用:(
create or replace
function REFRESH_MV (mv_to_refresh IN VARCHAR2)
RETURN VARCHAR2
AUTHID CURRENT_USER
AS
COUNTS INT;
begin
DBMS_MVIEW.REFRESH(mv_to_refresh,'C');
COMMIT;
SELECT COUNT(*) INTO COUNTS FROM 'SEMANTIC.' || mv_to_refresh;
IF COUNTS = 0 THEN
RETURN 'SEMANTIC.' || mv_to_refresh || ' is empty';
ELSE
'SEMANTIC_READ_ONLY.' || RELOAD_TABLE(mv_to_refresh);
RETURN 'SEMANTIC_READ_ONLY.' || mv_to_refresh || ' has been refreshed today';
END IF;
EXCEPTION WHEN OTHERS THEN NULL;
end;
【问题讨论】: