2012-07-27 77 views
1

我想明天04:15開始,每兩小時後啓動計劃作業。這項工作應該每天開始,每兩小時後開始。喜歡的東西在:04:15,06:15,08:15 ....計劃的作業沒有推出

的程序是關於在遠程計算機創建文件。當我測試程序時,它工作得很好,並在遠程位置創建文件。但是,它在dbms_jobs包中作爲一項工作失敗。我不確定我做錯了什麼。下面是程序代碼:

CREATE OR REPLACE PROCEDURE ARC_HRVR.VR_AD_INTEGRATION_EXPORT AS 
    v_file UTL_FILE.file_type; 
BEGIN 
    v_file := UTL_FILE.fopen('DIR_VR_AD_INTEGRATION', 'HRMtoAD1_'||to_char(sysdate,'YYYYMMDD')||'_'||to_char(sysdate,'HH24MISS'), 'w', 32767); 
    FOR x IN (
    SELECT * FROM (SELECT 
        decode(pid, NULL, RPAD(' ',7,' '), RPAD(user_id, 7, ' '))|| '' || 
        decode(o365, NULL, RPAD(' ',80,' '), RPAD(o365, 80, ' ')) 
        str FROM table WHERE integrated = 'N') str WHERE rownum <= 1000 ORDER BY rownum) 
    ´LOOP 
    BEGIN 
     UTL_FILE.put_line(v_file, x.str); 
    END; 
END LOOP; 
UTL_FILE.fflush(v_file); 
UTL_FILE.fclose(v_file); 
END VR_AD_INTEGRATION_EXPORT; 

這裏是開展工作的代碼:

DECLARE 
    l_id binary_integer; 
    begin 
    dbms_job.submit(job => l_id, what => 'ARC_HRVR.vr_ad_integration_export();', interval => 'TRUNC(SYSDATE)+1+4.25/24',); 

    dbms_output.put_line(l_id);  
end; 

指導和調整的位將修復我的代碼:-) 預先感謝

+1

你'dbms_job.submit'呼叫與')結束;'。這肯定是錯誤的。是複製粘貼錯誤? – 2012-07-27 06:49:25

+0

是的,這是複製粘貼錯誤...在客戶公司交談後,DBA現在工作正常 – Jaanna 2012-07-27 09:31:07

+0

無關,但對於它的價值:你真的不需要周圍的包裹內循環額外'BEGIN ... END' utl_file.put_line過程。 – Wolf 2012-07-27 15:11:13

回答

2

你在工作的過程所有者(ARC_HRVR)或作爲訪問執行代碼,用戶把?

你有沒有在執行塊試圖圍繞着「什麼」?

begin ARC_HRVR.vr_ad_integration_export(); end; 

工作正在啓動,對不對?你看到next_date在視圖dba_jobs等得到更新?

+0

是的,它的工作原理相當精緻 我只是檢查一遍。顯然,有一些授權問題和DBA修復它..喬布現在工作完美無缺:-) – Jaanna 2012-07-27 09:30:35

0

你可以參考這個例子

BEGIN 
    DBMS_SCHEDULER.create_job (
    job_name  => 'test_full_job_definition', 
    job_type  => 'PLSQL_BLOCK', 
    job_action  => 'BEGIN my_job_procedure; END;', 
    start_date  => SYSTIMESTAMP, 
    repeat_interval => 'freq=hourly; byminute=0; bysecond=0;', 
    end_date  => NULL, 
    enabled   => TRUE, 
    comments  => 'Job defined entirely by the CREATE JOB procedure.'); 
END; 
/

和更詳細,請通過這個Scheduler