Oracle 存储过程实例
- create or replace procedure PCREPORT is
- startDate DATE; --起始如期
- nowTime DATE; --当前日期
- nowTime2 DATE; --当前日期下限用于支持跨年
- orderDate DATE; --计算时候的当前下订单日期
- orderDate2 DATE; --跨年使用的日期范围下限
- returns number; --退订总数
- renew number; --续费总数
- active number; --激活人数
- noActive number; --未激活人数
- activeReturn number; --激活退订人数
- noActiveReturn number; --未激活退订人数
- reportDateActive number; --报表时间激活的人数
- tempStr varchar2(3000);
- i number;
- number_value number;
- --1.起始时间与当前时间减法,用结果做循环遍历的次数
- --2.每次遍历在起始时间上加,遍历次数的月值
- --3.将这个时间值作为条件,查询统计出一个统计值,将这个值插入到数据库对应的字段
- begin
- startDate := to_date('2009-04-01', 'yyyy-mm-dd');
- /* SELECT to_char(sysdate, 'yyyy-mm-dd ') into tempStr from dual;
- nowTime := to_date(tempStr, 'yyyy-mm-dd');*/
- select to_date(to_char(sysdate, 'YYYYMM') || '', 'YYYY-MM-DD')
- into nowTime
- from dual;
- nowTime2 := add_months(nowTime, 1);
- number_value := months_between(nowTime, startDate); --月份差
- i := 0;
- for i in 0 .. number_value loop
- orderDate := add_months(startDate, i);
- orderDate2 := add_months(orderDate, 1);
- -- 续费及激活总数的计算
- select count(*)
- into renew
- from ord_order
- where AGREE_TO_TIME between orderDate and orderDate2 --(select to_char(AGREE_TO_TIME, 'mm') from dual) =
- and (end_time = to_date('1900-01-01', 'yyyy-mm-dd') or
- end_time >= nowTime); --(select to_char(end_time, 'mm') from dual) >= '07');
- --续费用户退订总人数
- select count(*)
- into returns
- from ord_order
- where AGREE_TO_TIME between orderDate and orderDate2 --(select to_char(AGREE_TO_TIME, 'mm') from dual) = '05'
- and end_time between nowTime and nowTime2; --(select to_char(end_time, 'mm') from dual) = '07';
- --续费用户激活未退订
- select count(*)
- into noActiveReturn
- from ord_order
- where AGREE_TO_TIME between orderDate and orderDate2 -- (select to_char(AGREE_TO_TIME, 'mm') from dual) = '06'
- and end_time between nowTime and nowTime2 --(select to_char(end_time, 'mm') from dual) = '07'
- and BECOME_EFFECTIVE_TIME < nowTime --to_date('2009-07-01', 'yyyy-mm-dd')
- and BECOME_EFFECTIVE_TIME = to_date('1900-01-01', 'yyyy-mm-dd');
- -- 当前报表月在个月激活的人数
- select count(*)
- into reportDateActive
- from ord_order
- where AGREE_TO_TIME between orderDate and orderDate2 --(select to_char(AGREE_TO_TIME, 'mm') from dual) = '05'
- and (end_time = to_date('1900-01-01', 'yyyy-mm-dd') or
- end_time >= nowTime) --(select to_char(end_time, 'mm') from dual) >= '06')
- and BECOME_EFFECTIVE_TIME between nowTime and nowTime2; --(select to_char(BECOME_EFFECTIVE_TIME, 'mm') from dual) = '06';
- -----------------------------之前经过校验得到正确结果---------------------
- --续费用户报表月激活人数
- select count(*)
- into active
- from ord_order
- where AGREE_TO_TIME between orderDate and orderDate2 --(select to_char(AGREE_TO_TIME, 'mm') from dual) = '04'
- and BECOME_EFFECTIVE_TIME != to_date('1900-01-01', 'yyyy-mm-dd')
- and BECOME_EFFECTIVE_TIME < nowTime --(select to_char(BECOME_EFFECTIVE_TIME, 'mm') from dual) < '07'
- and ((end_time = to_date('1900-01-01', 'yyyy-mm-dd')) or
- end_time >= nowTime); --(select to_char(end_time, 'mm') from dual) >= '07');
- activeReturn := returns - noActiveReturn;
- noActive := renew - active - reportDateActive;
- --做插入操作
- insert into report_pc51
- (REPORTDATE,
- ORDERDATE,
- RENEW,
- RETURNS,
- NOACTIVERETURN,
- REPORTDATEACTIVE,
- ACTIVERETURN,
- ACTIVE,
- NOACTIVE)
- values
- (nowTime,
- orderDate,
- renew,
- returns,
- noActiveReturn,
- reportDateActive,
- activeReturn,
- active,
- noActive);
- dbms_output.put_line(i);
- end loop;
- COMMIT;
- end PCREPORT;
Oracle 存储过程实例的更多相关文章
- oracle存储过程实例
oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的P ...
- Oracle 存储过程实例2
--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p ( --参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is ...
- ORACLE 存储过程实例 [备忘录]
统计报表:用户登录量(平台点击量)每月月初定时任务统计前一个月的登陆次数.登陆账号数.账号总数. 使用存储过程把查询的值存储到表 RP_MONTH_CLICK 中. create or replace ...
- Oracle存储过程实例分析总结(代码)
1.存储过程结构 1.1 第一个存储过程 ? 1 2 3 4 5 6 7 8 9 10 11 12 CREATE OR REPLACE PROCEDURE proc1 ( para1 varc ...
- JAVA调用oracle存储过程实例
1.创建添加存储过程 CREATEORREPLACEPROCEDURE stu_proc(v_id INNUMBER, v_name INVARCHAR2, v_age INNUMBER) AS BE ...
- oracle存储过程的例子
oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的 ...
- oracle中print_table存储过程实例介绍
oracle中pro_print_table存储过程实例介绍 存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.这 ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
随机推荐
- Quartz.Net使用
相关的Quartz的Demo https://yunpan.cn/cY3GZGcyTSQxu 访问密码 8b60 官方的写的也挺仔细的.http://www.quartz-scheduler.net ...
- What Makes a Good Programmer Good?
I’ve worked with a lot of programmers over the years — some of them super amazing, and some distinct ...
- Memcached 使用
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- 在Linux下进行磁盘分区
1. 分区前的规划 2. 查看本机上的磁盘信息 3. 对第二个磁盘进行交换式分区操作(输入m为帮助信息) 图 1:n为新建分区 图 2:p为 ...
- Iframe跨域_ASP.NET
1.描述: A系统 需要 调用 B系统的页面,被调用的B系统的页面b.html内部嵌套了iframe框架c.aspx地址页 2.问题呈现: ie浏览器下 Chrome浏览器下 追踪 3.问题原因: X ...
- Swift学习链接
http://wiki.jikexueyuan.com/project/swift/chapter1/02_a_swift_tour.html
- 实例介绍Cocos2d-x精灵菜单和图片菜单
精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage.由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单.为什么叫精灵菜单呢?那是 ...
- JavaScript之字符串
一.声明方式 1. 直接赋值 var str = 'hello javascript'; 2. 构造函数 var str2 = new String('hello world'); 这两种有什么区别呢 ...
- AngularJS中的MVC模式
MVC根据逻辑关系,把前端项目的代码分为三个层次 model:模型,就是业务数据,前端项目中就是JS变量. view:视图,就是业务数据在用户面前的展现,前端项目中就是HTML. controller ...
- 13.mariadb-rhce考试解题思路
1.安装mariadb ①yum install -y mariadb mariadb-server 或者 yum groupinstall -y mariadb 2.备份和还原数据库 ①备份:mys ...