我是Oracle SQL的初学者。我正在使用Oracle SQL开发人员工具。我有两个过程,分别为p1
和p2
。
如何使用链概念每天在特定时间一个接一个地执行过程,这意味着一旦完全完成,我应该首先执行p1
。之后,我必须每天在特定时间执行p2
。
就我而言,我必须在3.00时钟执行。供您参考,请参见下面的示例代码。谁能解决这个问题?预先感谢
BEGIN
DBMS_SCHEDULER.CREATE_CHAIN (
chain_name => 'my_chain1',
rule_set_name => NULL,
evaluation_interval => NULL,
comments => NULL);
END;
/
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_STEP('my_chain1', 'stepA', 'P1');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP('my_chain1', 'stepB', 'P2');
END;
/
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'TRUE', 'START stepA');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'stepA COMPLETED', 'Start stepB');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'stepB COMPLETED', 'END');
END;
/
BEGIN
DBMS_SCHEDULER.ENABLE('my_chain1');
END;
/
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'chain_job_1',
job_type => 'CHAIN',
job_action => 'my_chain1',
repeat_interval => 'freq=daily;byhour=13;byminute=0;bysecond=0', //In my case I should execute afternoon 1.00 clock so I used 13.00 in byhour
enabled => TRUE);
END;
/
注意:除连锁概念外,也欢迎
答案 0 :(得分:1)
我猜问题在这里:
DEFINE_CHAIN_STEP('my_chain1', 'stepA', 'P1');
DEFINE_CHAIN_STEP('my_chain1', 'stepB', 'P2');
P1,p2-必须是调度程序(检查dbms_scheduler.create_program
)或调度程序链。
但是问题是您是否真的需要调度程序链。恕我直言,您正在尝试过度设计
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'simple_plsqlBlock_job',
job_type => 'PLSQL_BLOCK',
job_action => 'begin p1;
p2;
end;',
repeat_interval => 'freq=daily;byhour=13;byminute=0;bysecond=0', //In my case I should execute afternoon 1.00 clock so I used 13.00 in byhour
enabled => TRUE);
END;
/