4

Oracle (11R2) DBMS スケジューラでジョブ チェーンを構築しています。チェーンは2段です。各ステップは同じプログラムを実行しますが、引数は異なります。チェーン、ステップ、ルールなどを定義する方法はわかりますが、ステップの引数値を設定する方法はわかりません。

プログラムへの単一の呼び出しであるジョブを作成するときは、次のように引数を設定します。

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);
4

1 に答える 1

0

もちろん、同じストアド プロシージャまたは実行可能ファイルを参照することはできますが、これには 2 つの異なるプログラムを定義する必要があると思います。

前者の場合、引数の値を変更しない限り、匿名ブロック プログラム型を使用してストアド プロシージャへの引数を指定する傾向があります。これは、すべてのプログラム引数を追加しなくても十分に複雑です。

于 2012-05-22T22:07:13.860 に答える