【问题标题】:define an argument value for a step in an Oracle job chain为 Oracle 作业链中的步骤定义参数值
【发布时间】:2012-05-29 03:08:53
【问题描述】:

我正在 Oracle (11R2) DBMS 调度程序中构建作业链。链条有两个步骤。每个步骤都运行相同的程序,但参数不同。我可以看到如何定义链、步骤、规则等 - 但我不知道如何设置步骤的参数值。

当我构建对程序进行单次调用的作业时,我会这样设置参数:

dbms_scheduler.set_job_argument_value(
   job_name    => 'MY_JOB',
   argument_position => 1,
   argument_value => 'foo');  

我的问题是:我会调用哪个 dbms_scheduler 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);

【问题讨论】:

  • 经过更多搜索后,我似乎可以为链中的步骤定义参数。一种解决方法是将它们存储在一个表中,并从每个步骤中查找它们。我在这里找到了这个答案:freelists.org/post/oracle-l/…
  • 嗨,你能发布你的最终解决方案吗,我也遇到了这个问题。 John 发布的链接转发到另一个带有 oracle 论坛链接的帖子,但该页面似乎已被删除

标签: oracle11g dbms-scheduler


【解决方案1】:

我相信您必须为此定义两个不同的程序,尽管它们当然可以引用相同的存储过程或可执行文件。

在前一种情况下,除非我要修改参数值,否则我倾向于使用匿名块程序类型来指定存储过程的参数——它已经足够复杂,无需添加所有程序参数。

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多