oracle_存储过程小记
# 刷新会员标签函数 {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_存储过程小记的更多相关文章
- oracle_存储过程_没有参数_根据配置自动创建申请单以及写日志事务回滚
CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_CREATEASvs_msg VARCHAR2(4000);p_PERIODTYPE number; -- ...
- oracle_存储过程_没有参数_更新过期申请单以及写日志事务回滚
CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_UPDATEASvs_msg VARCHAR2(4000);log_body VARCHAR2(400); ...
- oracle_存储过程_有参数_获取部门装置层级树
create or replace procedure P_UTIL_TREE(P_APPL_NAME in VARCHAR2, P_HIERARCHY_TYP in VARCHAR2, TREETY ...
- Oracle_视图_索引_plsql_游标_存储过程_存储函数_触发器
-- 感觉有用点个赞呗^v^ select * from emp; drop view persin_vw;--删除视图 create table emp as select * from scott ...
- Java:HashMap类小记
Java:HashMap类小记 对 Java 中的 HashMap类,做一个微不足道的小小小小记 概述 HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复 ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...
- mysql进阶之存储过程
往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 ...
随机推荐
- python---不支持中文注释解决办法
很神奇的一件事儿,pycharm不支持中文注释,具体解决办法: #-*- coding: utf- -*- 具体使用:
- 微信都在用的移动敏捷测试方法和工具|视频+PPT
本文是腾讯优测总监雷彬在MPD2016 北京站上的演讲视频.他详细讲述了腾讯多年来在实践敏捷研发过程中测试的优化之路,为测试角色(包括测试工程师和开发自测)提供敏捷作业的思路.点击此处观看视频.时长5 ...
- 专访|HPE软件部中国区总经理李时:HPE引领IT战略新形态
2016年7月22日,「HPE&msup软件技术开放日」将在上海举办,msup携手HPE揭秘全球测试中心背后的12条技术实践. 李时:HPE软件部中国区总经理,将在本次开放日带来<HP ...
- POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]
题目链接:http://poj.org/problem?id=2676 Time Limit: 2000MS Memory Limit: 65536K Description Sudoku is a ...
- hihocoder 1322 - 树结构判定 - [hiho一下161周][模板题/水题]
题目链接:http://hihocoder.com/problemset/problem/1322 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个包含 N 个顶 ...
- 冒泡排序之python
冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工 ...
- java内存区域-方法区
方法区(Method Area)与java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据.虽然java虚拟机规范把方法区描述为堆的一个 ...
- CF1003E Tree Constructing 构造+树论
正解:构造 解题报告: 传送门! 这题麻油翻译鸭,,,那就先大概港下题意趴QAQ 构造一棵n个点,直径为d,每个点点度不超过k的树 这题其实我jio得还是比较简单的趴,,, 首先构造出一条直径,就是一 ...
- html+css小总结
html+css小总结 1.块级元素 <div> <h1> <hr /> <p> <pre> <ol> <ul> & ...
- python操作docx学习资料
1.博客 (1)写入参考 https://www.cnblogs.com/rencm/p/6285304.html (2)读取参考 http://www.cnblogs.com/zhanghongfe ...