# 刷新会员标签函数 {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. pandas 中的DataFrame.where()使用

    pandas.DataFrame.where DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, try_ca ...

  2. poj2492 A Bug's Life【并查集】

    Background  Professor Hopper is researching the sexual behavior of a rare species of bugs. He assume ...

  3. 源码 mongod.lock shutdown

    https://github.com/mongodb/mongo/blob/master/src/mongo/db/db.cpp 1. 退出原理 /proc/" << pid 判 ...

  4. IOS--jenkins ,app,reengine

    传统的对iOS逆向的工具要使用到下面很多: clutchotoolkeychain-dumpersqlitedumpdecryptedclass-dump-zTheos http://iosapp.m ...

  5. iOS多线程编程之创建线程(转载)

    一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 (1)创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:sel ...

  6. 2018/03/15 每日一个Linux命令 之 mv

    Linux mv命令用来为文件或目录改名.或将文件或目录移入其它位置. mv [参数] [要移动/更名的文件] [移动路径/要更改名字] 平常用的很多了,这里就不多讲解了,只介绍两个重要参数就好了 - ...

  7. 利用compass制作雪碧图

    compass是什么?是sass一款神奇插件,具体教程,我还是推荐阮一峰sass,compass教程,简单清晰明了. 用ps制作雪碧图,工作效率太低了.用compass来制作,方便很多.下图的用com ...

  8. nodejs(四)file System模块 解决Cross device link错误 EXDEV

    var fs = require('fs'); /*cross device link fs.rename('c:\\err.LOG','d:\\err.LOG',function(err){ con ...

  9. [py][mx]django使用class写views-免去判断方法的烦恼

    修改views使用class模式 类模式写views - 免去了函数模式的判断的烦恼 users/views.py from django.views.generic import View clas ...

  10. 配置apache实现对网站某一目录的访问自动跳转到指定目录

    访问www.baidu.com/Hello目录,实际访问/new_balance/hello2 Alias /Hello/ /new_balance/hello2 <Directory /new ...