Question

I would like to launch a scheduled job after every two hours starting from 04:15 tomorrow. The job should launch everyday and after every two hours. Something like at : 04:15, 06:15, 08:15....

The procedure is about creating file in a remote machine. When I test the procedure then it works just fine, and creates file in remote location. However, it fails as a job in dbms_jobs package. I am not sure what I am doing wrong. Here is the code of procedure:

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;

And here is the code for launching job:

  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; 

A bit of guidance and tweaking will fix my code :-) Thanks in advance

Was it helpful?

Solution

Are you putting in the job as the procedure owner (ARC_HRVR) or as a user that has access to execute the code?

Have you tried surrounding the 'what' in a execution block?

begin ARC_HRVR.vr_ad_integration_export(); end;

The job is launching, right? You see next_date getting updated in the view dba_jobs, etc?

OTHER TIPS

You can refer this example

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;
/

and for more detail please go through this Scheduler

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top