Oracle11g 为Oracle作业链中的步骤定义参数值
我正在Oracle(11R2)DBMS调度器中构建作业链。链条有两个台阶。每个步骤运行相同的程序,但参数不同。我可以看到如何定义链、步骤、规则等,但我无法理解如何设置步骤的参数值 当我构建单次调用程序的作业时,我设置如下参数:Oracle11g 为Oracle作业链中的步骤定义参数值,oracle11g,dbms-scheduler,Oracle11g,Dbms Scheduler,我正在Oracle(11R2)DBMS调度器中构建作业链。链条有两个台阶。每个步骤运行相同的程序,但参数不同。我可以看到如何定义链、步骤、规则等,但我无法理解如何设置步骤的参数值 当我构建单次调用程序的作业时,我设置如下参数: dbms_scheduler.set_job_argument_value( job_name => 'MY_JOB', argument_position => 1, argument_value => 'foo'); 我
dbms_scheduler.set_job_argument_value(
job_name => 'MY_JOB',
argument_position => 1,
argument_value => 'foo');
我的问题是:我应该调用哪个dbms_调度程序func/proc来设置作业步骤的参数?使用以下示例,如何在“MY_CHAIN”中为“STEP_1”设置参数
谢谢,
约翰
我相信您必须为此定义两个不同的程序,尽管它们当然可以引用相同的存储过程或可执行文件
在前一种情况下,除非我要修改参数值,否则我倾向于使用匿名块程序类型来指定存储过程的参数——如果不添加所有程序参数,这就足够复杂了。经过更多搜索,我似乎可以为链中的步骤定义参数。解决方法是将它们存储在表中,并从每个步骤中查找它们。我在这里找到了答案:
DBMS_SCHEDULER.CREATE_CHAIN (
chain_name => 'MY_CHAIN',
rule_set_name => NULL,
evaluation_interval => NULL,
comments => 'Chain calls 2 steps. Same program but with different arg values.');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
chain_name => 'MY_CHAIN',
step_name => 'STEP_1',
program_name => 'MY_PROGRAM');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
chain_name => 'MY_CHAIN',
step_name => 'STEP_2',
program_name => 'MY_PROGRAM');
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'MY_CHAIN_JOB',
job_type => 'CHAIN',
job_action => 'MY_CHAIN',
repeat_interval => 'freq=daily;byhour=12;byminute=0;bysecond=0',
enabled => TRUE);