如何使用链在Oracle SQL开发人员中一个接一个地执行该过程?



我是Oracle SQL的初学者。我正在使用Oracle SQL开发人员工具。我有两个程序,称为p1p2

如何使用链概念每天在特定时间逐个执行程序,这意味着一旦完全执行,我应该先执行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;
/

注意:除链条概念也欢迎

我猜问题就在这里:

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;
/

相关内容

最新更新