我是 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;
/
注意:除了链条概念,也欢迎
最佳答案
我猜问题在这里:
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;
/
关于sql - 如何使用链在oracle sql developer中依次执行过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981992/