Search code examples
oraclestored-proceduresplsqlprocedurejobs

Job/Procedure to PL/SQL execution?


I've this PL/SQL and is working correctly also email is sended.

BEGIN
  FOR cur_rec IN
        (select JOB, SCHEMA_USER, WHAT from dba_jobs where Broken = 'Y') LOOP
    BEGIN
 SCHEMA2.send_mail(
            p_to        => '[email protected]',
            p_from      => '[email protected]',
            p_subject   => 'JOB Report',
            p_message   => 'Job name is: ' || cur_rec.what,
            p_smtp_host => 'webmail.test.com');       
    END;
  END LOOP;
END;
/

I need to schedule that PL/SQL execution every 4 hours, But I don't know how to create a job or a procedure with that code, I've tried a lot but still saying:

Completed with warnings

Any help to construct the job or/and procedure is appreciated.


Solution

  •     begin
    DBMS_SCHEDULER.CREATE_JOB (
       job_name=>'my_job',
       job_type=>'PLSQL_BLOCK',
       job_action=>
    'BEGIN
      FOR cur_rec IN
            (select JOB, SCHEMA_USER, WHAT from dba_jobs where Broken = ''Y'') LOOP
        BEGIN
     SCHEMA2.send_mail(
                p_to        => ''[email protected]'',
                p_from      => ''[email protected]'',
                p_subject   => ''JOB Report'',
                p_message   => ''Job name is: '' || cur_rec.what,
                p_smtp_host => ''webmail.test.com'');       
        END;
      END LOOP;
    END;',
       start_date=>sysdate+1, --start tomorrow at this time
       repeat_interval=>'FREQ=HOURLY; INTERVAL=4', --repeat every 4 hours
    auto_drop=>false
    );
    end;
    /
    

    Review documentation for additional options.. create job