2016-08-24 8 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でスケジュールを設定したい場合は、それは少し異なります。 –