我希望从明天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;
一些指导和调整将修复我的代码:-) 提前致谢
答案 0 :(得分:2)
您是作为程序所有者(ARC_HRVR)或有权执行代码的用户投入工作吗?
您是否尝试过围绕执行区中的'what'?
begin ARC_HRVR.vr_ad_integration_export(); end;
这项工作正在启动,对吗?你看到next_date在dba_jobs等视图中得到了更新吗?
答案 1 :(得分: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