Oracle 存储过程实例备忘

2015-01-21 12:17:40 · 作者: · 浏览: 2

统计报表:用户登录量(平台点击量)每月月初定时任务统计前一个月的登陆次数、登陆账号数、账号总数。


使用存储过程把查询的值存储到表 RP_MONTH_CLICK 中。


create or replace procedure update_RP_MONTH_CLICK? as
? --定义变量
? date_v varchar(6);? ? ? ? ? ? ? ? --年月? ? ? ? ? ? ?
? login_count_v INTEGER;? ? ? ? ? ? --登录次数
? login_accoun_count_v INTEGER;? ? --登录账号数? ? ? ? ? ?
? accoun_count_v INTEGER;? ? ? ? ? --账号总数
? begin
? /* ------------------ 获取参数 用into关键字赋值给变量 start--------------------- */?
? ? ? --年月
? ? ? select case WHEN to_char(sysdate-1,'YYYYMM')=to_char(sysdate,'YYYYMM') THEN to_char(sysdate,'YYYYMM')
? ? ? else to_char(sysdate-1,'YYYYMM') end into date_v from dual ;
? ? ? ? --登录次数
? ? ? select count(t.log_id) into login_count_v from SC_ACT_LOG t where t.act_type = 5
? ? ? and TO_DATE(TO_CHAR(t.act_time, 'YYYYMM'), 'YYYYMM') = TO_DATE(TO_CHAR(SYSDATE, 'YYYYMM'), 'YYYYMM');
? ? ?
? ? ? --登录账号数
? ? ? select? count(staff_id) into login_accoun_count_v from (
? ? ? ? ? select t.staff_id from SC_ACT_LOG t where t.act_type = 5
? ? ? ? ? and TO_DATE(TO_CHAR(t.act_time, 'YYYYMM'), 'YYYYMM') = TO_DATE(TO_CHAR(SYSDATE, 'YYYYMM'), 'YYYYMM')
? ? ? ? ? group by t.staff_id
? ? ? ? );
? ? ? -- 账号总数
? ? select count(t.staff_id) into accoun_count_v from HRM_STAFF t where t.status = 1 ;
? /* ------------------ 获取参数 end--------------------- */? ?
? --先删除
? delete from RP_MONTH_CLICK where RMONTH = date_v ;
? --再添加
? insert into RP_MONTH_CLICK ( ID, RMONTH,LOGIN_COUNT,LOGIN_ACCOUNT_COUNT,ACCOUNT_COUNT )
? values( SEQ_SC_GLOBAL_PARAMETERS.NEXTVAL,date_v,login_count_v,login_accoun_count_v,accoun_count_v);? ? ? ?
? commit;
? end;