구체화 된보기의 목록이 있습니다. 나는이 모든 뷰를 포함 할 패키지를 만들고 싶다. 필요할 때마다 패키지를 새로 고칠 수있다.많은 구체화 된보기가있는 oracle에 패키지를 생성하는 방법
2
A
답변
2
내가 만든 다음과 같은 패키지 :
---- Creating specification
CREATE OR REPLACE PACKAGE SM_OWN.mv_refr_pkg
IS
PROCEDURE PROC_MV_REFRESH;
END mv_refr_pkg;
/
---- Creating BODY
CREATE OR REPLACE PACKAGE BODY SM_OWN.mv_refr_pkg
IS
PROCEDURE PROC_MV_REFRESH
IS
BEGIN
FOR mv_name IN
(SELECT NAME
FROM sys.dba_dependencies
WHERE OWNER = 'SM_OWN'
AND referenced_name='SM_TRANSFER'
AND TYPE='MATERIALIZED VIEW')
LOOP
DBMS_OUTPUT.PUT_LINE(systimestamp || ' Refreshing materialized view SM_OWN.'||mv_name.Name);
DBMS_SNAPSHOT.REFRESH('SM_OWN.'||mv_name.Name);
END LOOP;
END PROC_MV_REFRESH;
END;
/
How to Run:
set serveroutput on ;
execute SM_OWN.mv_refr_pkg.PROC_MV_REFRESH;
1
스키마의 모든 mview를 새로 고치는 코드를 만들겠습니까?
뭔가
Create procedure mv_ref is
begin
for i in (select mview_name from user_mviews) loop
dbms_mview.(i.mview_name,'f'); -- or whatever method you use
end loop;
end;
나는 오라클이 여기에 설치되어 있지 않은
같은 - 그래서 컴파일하지 않는 경우, 당신은 그것에서 아이디어를 얻을 수있을 것입니다 ...
+0
감사합니다. 나는 당신에 의해 언급 된 절차를 작성했습니다. 잘 작동합니다. 이제이 프로 시저를 패키지 내에서 호출하려고합니다. 마지막으로 패키지를 새로 고칠 수 있습니다. –
패키지는 구체화 된보기의 컨테이너가 아닙니다. 아마도 패키지가 아닌 새로 고침 그룹을 만드는 방법을 묻는 것입니까? –
예 새로 고침 그룹을 만들고 싶지만 클라이언트에서 모든 구체화 된 뷰를 새로 고치는 절차가있는 패키지를 만들어달라고 요청했습니다. –
새로 고침 그룹 및 해당 새로 고침 그룹을 새로 고치는 패키지 된 프로 시저를 만드시겠습니까? 또는 각 구체화 된 뷰를 차례로 새로 고치는 패키지 된 프로 시저를 만들려고합니까? 모든 구체화 된 뷰가 트랜잭션 적으로 서로 일관성이 있어야합니까? 또는 모두 독립적으로 새로 고칠 수 있습니까? –