# 刷新会员标签函数 {color:red} fun_refresh_code{color}
{noformat}
CREATE OR REPLACE FUNCTION fun_refresh_code(v_code NUMBER := 0)
RETURN varchar2 IS
vsql VARCHAR2(1000);
outpass VARCHAR2(100);
outfail VARCHAR2(100);
refreshresult VARCHAR2(100);
errormgs VARCHAR2(1000);
BEGIN
outpass := 'mview_css_mbrlabel_' || v_code || '刷新成功';
outfail := 'mview_css_mbrlabel_' || v_code || '刷新失败';
vsql := 'call dbms_mview.refresh(' || 'mview_css_mbrlabel_' || v_code || ')';
execute immediate vsql;
refreshresult := outpass;
INSERT INTO css_procExecLog
(UUID, CREATED, errorMsg, tablename, operation, STATUS)
VALUES
(sys_guid(),
sysdate,
'',
'mview_css_mbrlabel_' || v_code,
'refresh',
'success');
COMMIT;
-- return outpass;
Exception
When others then
refreshresult := outfail;
errormgs := sqlcode || sqlerrm(sqlcode);
INSERT INTO css_procExecLog
(UUID, CREATED, errorMsg, tablename, operation, STATUS)
VALUES
(sys_guid(),
sysdate,
errormgs,
'mview_css_mbrlabel_' || v_code,
'refresh',
'failed');
COMMIT;
-- return outfail;
return refreshresult;
END;
{noformat}
# 删除会员标签函数 {color:red} fun_delete_code{color}
{noformat}
CREATE OR REPLACE FUNCTION fun_delete_code(v_code NUMBER := 0) RETURN varchar2 IS
vsql VARCHAR2(1000);
outpass VARCHAR2(100);
outfail VARCHAR2(100);
deleteresult VARCHAR2(100);
errormgs VARCHAR2(1000);
BEGIN
outpass := 'mview_css_mbrlabel_' || v_code || '删除成功';
outfail := 'mview_css_mbrlabel_' || v_code || '删除失败';
vsql := '(drop MATERIALIZED VIEW ' || 'mview_css_mbrlabel_' || v_code || ')';
execute immediate vsql;
deleteresult := outpass;
INSERT INTO css_procExecLog
(UUID, CREATED, errorMsg, tablename, operation, STATUS)
VALUES
(sys_guid(),
sysdate,
'',
'mview_css_mbrlabel_' || v_code,
'delete',
'success');
COMMIT;
-- return outpass;
Exception
When others then
deleteresult := outfail;
errormgs := sqlcode || sqlerrm(sqlcode);
INSERT INTO css_procExecLog
(UUID, CREATED, errorMsg, tablename, operation, STATUS)
VALUES
(sys_guid(),
sysdate,
errormgs,
'mview_css_mbrlabel_' || v_code,
'delete',
'failed');
COMMIT;
-- return outfail;
return deleteresult;
END;
{noformat}
# 刷新视图 {color:red} mbrlabelrefresh{color}
{noformat}
CREATE OR REPLACE PROCEDURE mbrlabelRefresh IS
v_code css_label_mview.code%TYPE;
vsql_mview_css_mbr VARCHAR2(1000);
vsql_css_label_mview VARCHAR2(1000);
vsql_mbrlabelproc VARCHAR2(1000);
vsql_mbrlabelviewproc VARCHAR2(1000);
vsql_mbrlabellogproc VARCHAR2(1000);
vsql VARCHAR2(1000);
-- 定义变量
CURSOR code_cursor IS
select l.code
from css_label_mview l
where not exists (select *
from user_mviews vl
where l.code = SUBSTR(vl.mview_name, 20));
-- 定义游标
BEGIN
vsql_mview_css_mbr := call dbms_mview.refresh('mview_css_mbr');
vsql_css_label_mview := call dbms_mview.refresh('css_label_mview');
-- 刷新会员和标签表的语句
vsql_mbrlabellogproc := call vsql_mbrlabellogproc();
-- Css库生成日志
vsql_mbrlabelproc := call MBRLABELPROC();
-- 生成会员标签语句
vsql_mbrlabelviewproc := call MBRLABELVIEWPROC();
-- 刷新会员标签关系语句
execute immediate vsql_mbrlabellogproc;
-- 执行生成css库的日志表
execute immediate vsql_mview_css_mbr;
execute immediate vsql_css_label_mview;
-- 执行刷新会员和标签表的语句
execute immediate vsql_mbrlabelproc;
-- 执行生成会员标签语句
FOR code_cur IN code_cursor LOOP
begin
v_code := code_cur.code;
select fun_refresh_code(v_code) from dual;
end;
END LOOP;
-- 调用函数进行刷新
-- 刷新已有标签视图,按照游标查询出来的code,对每个code的物化视图刷新一次,并记录日志
execute immediate vsql_mbrlabelviewproc;
-- 执行存储过程,将会员跟标签关系刷新
END mbrlabelRefresh;
{noformat}
# 删除视图 {color:red} mviewmbrlabeldelete{color}
{noformat}
CREATE OR REPLACE PROCEDURE mviewmbrlabeldelete IS
v_code css_label_mview.code%TYPE;
vsql VARCHAR2(1000);
-- 定义变量
CURSOR code_cursor IS
select l.code
from css_label_mview l
where not exists (select *
from user_mviews vl
where l.code = SUBSTR(vl.mview_name, 20));
-- 定义游标
BEGIN
FOR code_cur IN code_cursor LOOP
begin
v_code := code_cur.code;
select fun_delete_code(v_code) from dual;
END LOOP;

-- 调用函数进行刷新 
-- 将游标取出的物化视图删除掉,删除不了记录日志
END mviewmbrlabelDelete;
{noformat}

oracle_存储过程小记的更多相关文章

  1. oracle_存储过程_没有参数_根据配置自动创建申请单以及写日志事务回滚

    CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_CREATEASvs_msg VARCHAR2(4000);p_PERIODTYPE number; -- ...

  2. oracle_存储过程_没有参数_更新过期申请单以及写日志事务回滚

    CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_UPDATEASvs_msg VARCHAR2(4000);log_body VARCHAR2(400); ...

  3. oracle_存储过程_有参数_获取部门装置层级树

    create or replace procedure P_UTIL_TREE(P_APPL_NAME in VARCHAR2, P_HIERARCHY_TYP in VARCHAR2, TREETY ...

  4. Oracle_视图_索引_plsql_游标_存储过程_存储函数_触发器

    -- 感觉有用点个赞呗^v^ select * from emp; drop view persin_vw;--删除视图 create table emp as select * from scott ...

  5. Java:HashMap类小记

    Java:HashMap类小记 对 Java 中的 HashMap类,做一个微不足道的小小小小记 概述 HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复 ...

  6. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

  7. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  8. MySQL主从环境下存储过程,函数,触发器,事件的复制情况

    下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...

  9. mysql进阶之存储过程

    往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 ...

随机推荐

  1. 使用Wireshark分析QQ聊天

  2. OpenCV学习笔记之课后习题练习4-1

    第四章课后练习1 1.本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助.a.创建一个程序实现以下功能:(1)从视频文件中读 ...

  3. 计蒜客 31001 - Magical Girl Haze - [最短路][2018ICPC南京网络预赛L题]

    题目链接:https://nanti.jisuanke.com/t/31001 题意: 一带权有向图,有 n 个节点编号1~n,m条有向边,现在一人从节点 1 出发,他有最多 k 次机会施展魔法使得某 ...

  4. numpy的文件存储 .npy .npz 文件

    1)Numpy能够读写磁盘上的文本数据或二进制数据.将数组以二进制格式保存到磁盘np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 ...

  5. Codeforces Round #439 (Div. 2)

    A. The Artful Expedient 题目链接:http://codeforces.com/contest/869/problem/A 题目意思:给你两个数列,各包含n个数,现在让你从上下两 ...

  6. DS作业·写了一个链表

    用struct手写了个list 有push_back,push_front,insert,erase reserve,size,setpos,rbegin 功能. 坑:一开始想用template< ...

  7. 删除RAC集群节点

    删除GRID集群节点:参考oracle database 11g RAC手册(第二版) 目前GRID集群中节点信息:[grid@node1 ~]$ olsnodesnode1node2node3nod ...

  8. mysql union出错: "Every derived table must have its own alias"

    SELECT count(*) from (SELECT province_code as area_id, count(*) from t_cas_rural_selected GROUP BY p ...

  9. Spring@Autowired注解

    @Autowired注解可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作. 注意:@Autowired默认是按照类型来注入的. 看下面的例子:例子是以对成员变量(field)为例进行的 p ...

  10. Git 常用命令(转)

    原文:http://www.cnblogs.com/1-2-3/archive/2010/07/18/git-commands.html add by zhj :图是用 思维导图 软件MindMapp ...