oracle - 您可以刷新触发器内的物化视图吗?甲骨文 11g
问题描述
基本上我有一个物化视图,当特定表 HISTORY_TABLE 更新时需要每月刷新一次,即 HISTORY_TABLE 仅插入到 c 中。每月一次。物化视图不包含与 HISTORY_TABLE 相关的数据,因此我无法在提交时刷新(据我所知)。
从我一直在阅读的内容来看,由于刷新时的隐式提交,因此无法刷新触发器内的 Mview。关于如何解决这个问题的任何想法?
DROP TRIGGER SYSADM.COMPLETE_NOTIF_SMS;
CREATE OR REPLACE TRIGGER SYSADM.COMPLETE_NOTIF_SMS
AFTER INSERT
ON SYSADM.HISTORY_TABLE
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
V_STATUS NUMBER;
V_NOTIFICATION_TEXT VARCHAR2(100);
V_CHECK_CATEGORY VARCHAR2(100);
BEGIN
insert into some_table values (v_check_category, v_notification_text,sysdate);
-- I want to refresh the Mview/snapshot here
DBMS_SNAPSHOT.REFRESH('mview_to_refresh');
EXCEPTION
WHEN OTHERS
THEN
-- Some variables are set to send an email.
RAISE;
END NOTIF_SMS;
/
解决方案
我不确定我是否做对了,但我使用这样的全局参数刷新了我的视图:
- 我创建了一个这样的包来设置我想要使用的值:
create or replace package dwh.DWH_GLOBAL_PARAMS_MANAGER is
-- Author : ALI.FIDANLI
-- Created : 21.03.2019 10:33:25
-- Purpose : kelepelik
PROCEDURE SET_ACC_DATE_CTX(PDATE DATE);
end DWH_GLOBAL_PARAMS_MANAGER;
CREATE OR REPLACE PACKAGE BODY DWH.DWH_GLOBAL_PARAMS_MANAGER IS
-- Author : ALI.FIDANLI
-- Created : 21.03.2019 10:33:25
-- Purpose : kelepelik
PROCEDURE SET_ACC_DATE_CTX(PDATE DATE)
AS
BEGIN
dbms_session.set_context('DWH_PARAMS','REPORT_DATE',TO_CHAR(PDATE,'dd.mm.yyyy'));
dbms_session.set_context('DWH_PARAMS','REPORT_DATE-1',TO_CHAR(PDATE-1,'dd.mm.yyyy'));
END;
END DWH_GLOBAL_PARAMS_MANAGER;
- 我在视图中使用了这些参数以及所需的参数:
-- Author : ALI.FIDANLI
-- Created : 21.03.2019 10:33:25
-- Purpose : kelepelik
CREATE OR REPLACE VIEW DWH.V_F_ACCOUNT AS
SELECT TO_DATE (SYS_CONTEXT ('DWH_PARAMS', 'REPORT_DATE-1'),'dd.mm.yyyy') REPORT_DATE,
C.ACC_NO,
C.ACC_CURRENCY,
pkg.func(C.ACC_NO, TO_DATE (SYS_CONTEXT ('DWH_PARAMS', 'REPORT_DATE-1'),'dd.mm.yyyy') ,C.ACC_GL_CODE) ACC_GL_CODE,
FROM xxxx.tablename C) ACC
所以我使用
begin
-- Call the procedure
dwh.dwh_global_params_manager.set_acc_date_ctx(pdate => :pdate);
end;
并使用我的观点....
让我知道它是否适合您,否则我将删除我的回复
推荐阅读
- java - 在对象列表中获取 ActualDate 或 Previous date
- nginx - 使用 Nginx 保护烧瓶应用程序中的一条路由的密码
- django - LinkedIn Oauth2.0 Django 使用 Python-social-auth 登录,重定向 URI 无效
- r - 从点创建多线,使用 sf 包按 ID 分组
- javascript - 为什么这个 map 方法会重复两次?
- javascript - Angular 5 - 避免应用程序性能下降的最佳实践
- angular - 使用 Angular Cli 制作组件模板
- max - 在 Verilog 中获取 MAX 或 MIN(签名)?
- python-2.7 - 消息:元素不可见
- powershell - $_.ReceivedTime Powershell 中的 Outlook 格式设置