oracle 储存过程demo
来源:互联网 发布:java 创建目录 编辑:程序博客网 时间:2024/06/06 03:18
需求:我们需要从另外一个数据库每天定时备份激活的数据到本地数据库
CREATE OR REPLACE PROCEDURE P_DEALER_ACTIVE_REPORT(PV_DATE inVARCHAR2) IS
/**
* 統計日激活報表
*/
PN_ID NUMBER; --主键
PV_CREATEDATE VARCHAR2(20); --创建时间
PV_ROUTEID VARCHAR2(50); --渠道编码
CURSOR activationList IS
SELECT T.*
FROM T_DEALER_ACTIVATION_LIST T
WHERE SUBSTR(V_ACT_DATE,1,8)= PV_CREATEDATE ;
--统计某天的激活量与产品信息
CURSOR orderList IS
SELECT COUNT(L.V_ROUTEID) N_NUM,L.V_ROUTEID,
T.V_BIG_TYPE,B.V_PROD_BIG_NAME,T.V_SMALL_TYPE,Y.V_SMALL_NAME,L.V_PROD_CODE,T.V_PROD_NAME,
V_ROUTENAME ,V_ROUTETYPE, V_ROUTETYPENAME,V_LEVEL,V_LEVELNAME,V_AREA,
V_AREANAME,V_SUBAREA,V_SUBAREANAME,V_MANAGERID,V_MANAGERNAME,
SUBSTR(V_ACT_DATE,1,4)||'/'|| SUBSTR(V_ACT_DATE,5,2)||'/'|| SUBSTR(V_ACT_DATE,7,2) V_FINISHTIME,
SUBSTR(V_ACT_DATE,1,6) V_MONTH
FROM T_DEALER_ACTIVATION_LIST L , T_DEALER_PRODUCT T , T_DEALER_PROD_TYPE Y, T_DEALER_PROD_BIG B,V_DEALER_DICT_ROUTE V
WHERE SUBSTR(V_ACT_DATE,1,8)=PV_CREATEDATE
AND L.V_PROD_CODE= T.V_PROD_CODE(+)
AND L.V_ROUTEID= V.V_ROUTEID(+)
AND T.V_SMALL_TYPE=Y.V_SMALL_TYPE(+)
AND Y.V_BIG_TYPE=B.V_PROD_BIG_CODE(+)
GROUP BY L.V_ROUTEID,L.V_PROD_CODE,V_ROUTENAME,V_ROUTETYPE, V_ROUTETYPENAME,V_LEVEL,V_LEVELNAME,V_AREA,
V_AREANAME,V_SUBAREA,V_SUBAREANAME,V_MANAGERID,V_MANAGERNAME,
T.V_BIG_TYPE,B.V_PROD_BIG_NAME,T.V_SMALL_TYPE,
Y.V_SMALL_NAME,T.V_PROD_NAME, SUBSTR(V_ACT_DATE,1,4)||'/'|| SUBSTR(V_ACT_DATE,5,2)||'/'|| SUBSTR(V_ACT_DATE,7,2),SUBSTR(V_ACT_DATE,1,6);
--统计激活量同步到_DEALER_ORDER_PROD
CURSOR prodListActivation IS
SELECT O.V_ORDERID,L.V_PROD_CODE,COUNT(*) N_ACTIVATION_NUMFROM T_DEALER_PROD_LIST L ,T_DEALER_CONSIGNMENT_ORDER O
WHERE O.V_ORDERID = L.V_ORDERID
AND D_USE IS NOT NULL
GROUP BY O.V_ORDERID,L.V_PROD_CODE;
BEGIN
--输入参数为空默认取前一天的日期
IF PV_DATE ISNULLTHEN
SELECT TO_CHAR(SYSDATE-1,'YYYYMMDD')INTO PV_CREATEDATE FROM DUAL;
ELSE
PV_CREATEDATE := PV_DATE;
END IF;
--删除已有记录
DELETE FROM T_DEALER_ACTIVATION_LIST
WHERE SUBSTR(V_ACT_DATE,1,8)=PV_CREATEDATE;
--删除日激活报表的数据
DELETE FROM T_DEALER_ACTIVE_REPORT RWHERE TO_CHAR(R.D_DAY,'YYYYMMDD')=PV_CREATEDATE;
--第一步,同步清单
INSERT INTO T_DEALER_ACTIVATION_LIST(V_ICCID,V_ROUTEID,V_ACT_DATE,D_IMPORT)
SELECT HD.ICCID,HD.SIMDEALERID ROUTEID,HD.TIMEENTERACTIVE,SYSDATE
FROM TB_DW_SUBSCRIBER_HIS_DAY HD ,T_DEALER_DICT_ROUTE R
WHERE HD.SIMDEALERID =R.V_ROUTEID
AND SUBSTR(HD.TIMEENTERACTIVE,1,8)= PV_CREATEDATE
AND HD.SIMDEALERID IS NOT NULL;
--第二步,补充完成激活清单
FOR O IN activationListLOOP
--如果在分销系统销售的,补充产品信息
UPDATE T_DEALER_ACTIVATION_LIST L
SET L.V_PROD_CODE =
(SELECT V_PROD_CODEFROM T_DEALER_PROD_LIST TWHERE T.V_ICCID=O.V_ICCID)
WHERE L.V_ICCID=O.V_ICCID;
--回填激活时间
UPDATE T_DEALER_PROD_LIST L
SET L.D_USE =TO_DATE(O.V_ACT_DATE,'yyyyMMddHH24MISS')
WHERE L.V_ICCID=O.V_ICCID;
COMMIT;
END LOOP;
--第三步,统计日激活报表
--添加当天激活记录
FOR o IN orderListLOOP
SELECT SEQ_ACTIVE_REPORT.NEXTVAL INTO PN_ID FROM DUAL;
PV_ROUTEID := o.V_ROUTEID;
INSERT INTO T_DEALER_ACTIVE_REPORT(
N_ID,V_MONTH,D_DAY,V_ROUTEID,V_BIG_TYPE,V_SMALL_TYPE,V_SMALL_NAME,V_PROD_CODE,V_PROD_NAME,N_NUM,
V_ROUTENAME,V_MANAGERID,V_MANAGERNAME,V_AREAID,V_AREANAME,V_LEVELID,V_LEVELNAME,V_TYPEID,V_TYPENAME,D_ACT)
VALUES(
PN_ID,
o.V_MONTH,
TO_DATE(o.V_FINISHTIME,'YYYY/MM/DD'),
o.V_ROUTEID,
o.V_BIG_TYPE,
o.V_SMALL_TYPE,
o.V_SMALL_NAME,
o.V_PROD_CODE,
o.V_PROD_NAME,
o.N_NUM,
o.V_ROUTENAME,
o.V_MANAGERID,
o.V_MANAGERNAME,
o.V_AREA,
o.V_AREANAME,
o.V_LEVEL,
o.V_LEVELNAME,
o.V_ROUTETYPE,
o.V_ROUTETYPENAME,
SYSDATE
);
COMMIT;
END LOOP;
--激活量同步到_DEALER_ORDER_PROD
FOR O IN prodListActivationLOOP
UPDATE T_DEALER_ORDER_PROD SET N_ACTIVATION_NUM =O.N_ACTIVATION_NUM
WHERE V_ORDERID=O.V_ORDERIDAND V_PROD_CODE=O.V_PROD_CODE;
COMMIT;
END LOOP;
END P_DEALER_ACTIVE_REPORT;
end P_DEALER_ACTIVE_REPORT
- oracle 储存过程demo
- oracle 储存过程
- oracle储存过程
- oracle储存过程与函数
- ORACLE储存过程合并数组
- oracle储存过程 真-详解
- oracle查询用户表,函数,储存过程,
- Oracle储存过程的基本语法
- Oracle的储存过程有什么作用
- jdbc如何调用oracle储存过程大全
- oracle 存储过程demo
- 储存过程
- 储存过程
- 储存过程
- 储存过程
- SqlServer存储过程转换成Oracle储存过程语法常见问题
- ORACLE之储存过程实现查询结果分页显示
- oracle包体中的储存过程与函数
- ListView 分页简单写法
- Myapp
- 如何防止抄板
- 12.17学习计划
- 深入理解计算机系统Cache实验源代码
- oracle 储存过程demo
- SpringBoot内嵌的Tomcat启动过程及其做过的工作
- 树、森林和二叉树之间的转换
- 文章点击周排行、月排行榜功能开发总结
- Spring+MyBatis整合使用MapperFactoryBean注入映射器(简化配置)
- jsonp cross-origin requests
- 全网搜隐私政策
- Hdoj 1728 逃离迷宫
- 冷备份