2016-08-24 72 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来安排,那就有点不同了。 –