Oracle PL/SQL执行的作业/过程?
我使用了此PL/SQL,并且工作正常,并且发送了电子邮件Oracle PL/SQL执行的作业/过程?,oracle,stored-procedures,plsql,procedure,jobs,Oracle,Stored Procedures,Plsql,Procedure,Jobs,我使用了此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 => 'receive@test.com', p_from => 'send@test
BEGIN
FOR cur_rec IN
(select JOB, SCHEMA_USER, WHAT from dba_jobs where Broken = 'Y') LOOP
BEGIN
SCHEMA2.send_mail(
p_to => 'receive@test.com',
p_from => 'send@test.com',
p_subject => 'JOB Report',
p_message => 'Job name is: ' || cur_rec.what,
p_smtp_host => 'webmail.test.com');
END;
END LOOP;
END;
/
我需要每4小时安排一次PL/SQL执行,但我不知道如何使用这些代码创建作业或过程,我已经尝试了很多,但仍然说:
以警告完成
感谢您对构建工作或/和程序的任何帮助
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 => ''receive@test.com'',
p_from => ''send@test.com'',
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;
/
查看文档以了解其他选项
查看文档以了解其他选项 您必须记住在pl/sql中转义引号。也不要像处理常规pl/sql块那样以斜杠(/)结尾。这假设您希望通过数据库进行调度。如果您想通过cron进行调度,那就有点不同了。您必须记住在pl/sql中转义引号。也不要像处理常规pl/sql块那样以斜杠(/)结尾。这假设您希望通过数据库进行调度。如果您想通过cron进行调度,那就有点不同了。