程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> ORACLE存儲過程實例[備忘錄]

ORACLE存儲過程實例[備忘錄]

編輯:Oracle教程

ORACLE存儲過程實例[備忘錄]


統計報表:用戶登錄量(平台點擊量)每月月初定時任務統計前一個月的登陸次數、登陸賬號數、賬號總數。

使用存儲過程把查詢的值存儲到表 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;
  


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved