2016-08-24 141 views
0

我有這個PL/SQL,並且工作正常也發送電子郵件。PL/SQL執行的作業/過程?

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

我需要安排的是PL/SQL執行每4個小時,但我不知道如何創建任務或與該代碼的程序,我已經嘗試了很多,但還是說:

完成與警告

任何幫助構建工作和/或過程表示讚賞。

回答

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

其他選項審查文件.. create job

+0

你要記住逃避你的報價在PL/SQL。並且不要像使用普通的pl/sql塊一樣使用斜線(/)來結束它。這假定你想通過數據庫進行預定。如果你想通過cron來安排,那就有點不同了。 –