oracle存儲過程和定時JOB的編寫

1.創建存儲過程(如果是沒有參數的存儲過程(V_PARAM IN VARCHAR) 這部分是需要刪除。

  CREATE OR REPLACE PROCEDURE PROCNAME(V_PARAM IN VARCHAR) AS
    ---定義變量
    V_CODE           VARCHAR2(100);
    V_SUM_CNT       NUMBER(22);
    V_BEGIN_TIME    DATE;
    V_END_TIME      DATE;
    V_SQL  VARCHAR2(512);

  V_HOUR         NUMBER;

----定義遊標

Cursor jobcursor is select  DEPT FROM  TABLE_NAME1;


  BEGIN
    ---變量初始化
    V_CODE    := 'TEST'||V_REGION;
    V_BEGIN_TIME := SYSDATE-1;
    V_END_TIME      := SYSDATE ;
    V_HOUR           :=0;


    --獲取當前分鐘數,賦給變量V_HOUR
    SELECT TO_CHAR(SYSDATE,'HH24') INTO V_HOUR FROM DUAL; 
 

------遊標的遍歷  

for job in jobcursor LOOP
DBMS_OUTPUT.PUT_LINE(job.job);; 
end LOOP;


    -----------調用sql變量的執行方式。

      V_SQL := 'SELECT  /*+ PARALLEL(A ,16) */ COUNT(*) FROM '||V_CODE ||'.TABLE_LOG A 
      where   logtime  BETWEEN  :V_BEGIN_TIME AND :V_END_TIME' ;
     EXECUTE IMMEDIATE V_SQL into V_SUM_CNT using V_BEGIN_TIME,V_END_TIME;
-----------其他的邏輯處理

-------異常處理邏輯
  EXCEPTION
    WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE));
  
  END; 

---------存儲過程的執行方法(注意斜槓前面不要有任何空格)
/



2.oracle定時job的實現

SET SERVEROUTPUT ON;

DECLARE
JOB_ID NUMBER;
    BEGIN  
       DBMS_JOB.SUBMIT(  
        JOB => JOB_ID,  /*自動生成JOB_ID*/  
         WHAT => 'PROCNAME(''test'');',   /*需要執行的過程或SQL語句,注意存儲過程後面要有分號*/   
        NEXT_DATE =>trunc(add_months(last_day(sysdate), -1)+25),  /*初次執行時間,每月25日零點*/  
        INTERVAL =>'TRUNC(LAST_DAY(SYSDATE ))+25'    /*每月25日零點,間隔時間*/  
      ); 
      COMMIT;       
    DBMS_OUTPUT.PUT_LINE('PROC_CXCRM_CUSM_011_JOB ID:' || JOB_ID);
    EXCEPTION
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('PROC_CXCRM_CUSM_011_JOB ERROR MSG:' || SQLERRM(SQLCODE));  
   END;  
/


3.oracle 刪除定時job

SET SERVEROUTPUT ON;
DECLARE
Cursor jobcursor is select job FROM DBA_JOBS a where  a.WHAT  like '%?%' ;
begin
for job in jobcursor LOOP
DBMS_OUTPUT.PUT_LINE(job.job);
DBMS_JOB.REMOVE(job.job); 
end LOOP;
commit;
end;
/

發佈了37 篇原創文章 · 獲贊 13 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章