2016-08-24 6 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을 통해 일정을 잡으려면 약간 다릅니다. –