试图创建工作但无法编译它让我给出这个错误。oracle论坛上有一个问题,它说我必须创建程序来包装它。有什么解决方法吗?
-- Created on 30.09.2014 by ALI.ORHAN
declare
-- Local variables here
i integer;
begin
-- Test statements here
dbms_scheduler.create_job(job_name => 'blabla'
,job_type => 'STORED_PROCEDURE'
,job_action => 'dingdongprocedure;'
,start_date => '30-OCT-14 10.00.00 PM'
,end_date => '15-JULY-08'
,repeat_interval => 'FREQ=WEEKLY BYDAY=TUE,FRI BYHOUR=10,13'
,enable => 'TRUE'
,comments => 'SUPREME COMMENT');
end;
从 PL/SQL Developer UI 创建作业后,我发现我的语法错误,新代码如下;
- 我使用 sys.dbms_scheduler.create_job 而不是 dbms_scheduler.create_job。我不知道差异,但这不是重要的改变。
- 我用 to_date 来定义 start_date,作为一个新手,我发现这个更好的做法。
重要的是,我将 job_class 参数添加到“DBMS_JOB$”。DBMS_JOB 是 Oracle RDBMS 的内置作业类。因此,您可以使用此查询找到所有工作:
select * from ALL_SCHEDULER_JOBS WHERE JOB_CLASS='DBMS_JOB$'
重要我的间隔是错误的,你应该放;在所有参数之间
repeat_interval => freq=weekly;byhour=10, 13
- 我的第一个工作代码有另一个语法错误,我使用enable而不是enabled。
我将 auto_drop 设置为 false。我猜这个参数是用来在完成工作时放弃工作的。我的意思是,如果您创建一个从今天到下周每天都会发生变化的工作。在结束时间到达之后,这个工作就被放弃了。如果我错了,请纠正我。
sys.dbms_scheduler.create_job(job_name => 'BOMBASTICJOB' ,job_type => 'STORED_PROCEDURE' ,job_action => 'dingdongprocedure' ,start_date => to_date('30-09-2014 00:00:00' , 'dd-mm-yyyy hh24:mi:ss') ,end_date => to_date(null) ,job_class => 'DBMS_JOB$' ,repeat_interval => 'Freq=Weekly; ByDay=Tue, Fri; ByHour=10, 13' ,enabled => true ,auto_drop => false ,comments => '');