create_job
通話をスケジュールするための基本的な通話です。これを行うために、名前付きプログラムやスケジュールを作成する必要はありません。名前付きプログラム/スケジュールの作成が役立つのは、この呼び出しを使用したいジョブが複数ある場合です。各ジョブにそのコピーを保持させる代わりに、指定されたプログラムスケジュールを参照することができます。
例えばパッケージを呼び出したいジョブが5つある場合MYPKG.ENTRY_PROG(param)
そして、各ジョブは異なるパラメータ値を使用しただけです。create_program
を使用したいと思います。 そのpl/sql呼び出しを定義してから、create_job
そのプログラム名を参照するには+選択したパラメータ値を設定します。そうすれば、後でAPIの名前を変更したい場合など、これを行うために5つの個別のジョブを変更する必要はありません。
ジョブが、他のジョブによって呼び出されないルーチンを呼び出すスタンドアロンジョブである場合は、create_program
を使用する必要はありません。 / create_schedule
、create_job
を使用するだけです 直接。
create_program
を使用した1つの例 テストハーネスを呼ぶことでした。私のテストハーネスパッケージはpkg_test_harness.queue_tests(p_set_name in varchar2)
と呼ばれています そのため、午前9時、午後12時、午後5時に実行されるさまざまなAPIをキューに入れるジョブをいくつか定義しました。各ジョブ呼び出しを個別に定義する代わりに、create_program
と呼びました。 のように:
dbms_output.put('Setting up TEST_HARNESS_ENQUEUE scheduler program...');
dbms_scheduler.create_program(program_name => 'TEST_HARNESS_ENQUEUE',
program_type => 'STORED_PROCEDURE',
program_action => 'pkg_test_harness.queue_tests',
number_of_arguments => 1,
enabled => false,
comments => 'Program to enqueue a set of API test for the test harness to run.');
dbms_scheduler.define_program_argument(program_name => 'TEST_HARNESS_ENQUEUE',
argument_name => 'p_set_name',
argument_position => 1,
argument_type => 'VARCHAR2',
default_value => '');
dbms_scheduler.enable (name => 'TEST_HARNESS_ENQUEUE');
dbms_output.put_line('done.');
次に、各「ジョブ」がプログラムを指すように定義されました。
dbms_output.put('Setting up TEST_HARNESS_ENQUEUE_9AM scheduler job...');
dbms_scheduler.create_job(job_name => 'TEST_HARNESS_ENQUEUE_9AM',
program_name => 'TEST_HARNESS_ENQUEUE',
start_date => systimestamp,
end_date => null,
repeat_interval => 'freq=daily; byhour=9; byminute=0; bysecond=0;',
enabled => true,
auto_drop => false,
comments => 'Job to enqueue a set of API test for the test harness to run.');
dbms_scheduler.set_job_argument_value(job_name => 'TEST_HARNESS_ENQUEUE_9AM',
argument_position => 1,
argument_value => 'DAILY_9AM');
dbms_output.put_line('done.');
dbms_output.put('Setting up TEST_HARNESS_ENQUEUE_12PM scheduler job...');
dbms_scheduler.create_job(job_name => 'TEST_HARNESS_ENQUEUE_12PM',
program_name => 'TEST_HARNESS_ENQUEUE',
start_date => systimestamp,
end_date => null,
repeat_interval => 'freq=daily; byhour=12; byminute=0; bysecond=0;',
enabled => true,
auto_drop => false,
comments => 'Job to enqueue a set of API test for the test harness to run.');
これらのスケジュールは個々のジョブに固有であるため、名前付きスケジュールは作成しませんでした。