今日は、ジョブを作成し、実行時に所定の時間を超えると終了させる必要があります。Oracle_Scheduling_Job_ DBMS_SCHEDULER.CREATE_JOBでmax_run_durationを直接設定できません
私は検索して、その意図のために属性max_run_duration
を設定する必要があることを発見しました。
私の質問は簡単です:ジョブを作成するときに、なぜその属性を直接設定できないのですか?なぜ私はジョブを最初に作成してから、その属性を後で設定する必要があるのですか、あるいは何か間違っていますか?
誰かがこの論理を私に説明できますか?
オラクルのスタッフがcreate_funtion
を変更して新しい属性にset_attribute
関数を追加するのが悪いと感じている、新しいバージョンのOracleに追加されたaddition attributes
があるかもしれませんか?
【選択エラースクリプト:(ORA-06550: PLS-00306: wrong number or types of arguments in call to 'CREATE_JOB'
)
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_job_name',
job_type => 'STORED_PROCEDURE',
job_action => 'schema_name.procedure_name',
start_date => '24-OCT-16 08.00.00 PM',
repeat_interval => 'FREQ=DAILY;BYHOUR=20;',
max_run_duration => INTERVAL '4' HOUR,
auto_drop => FALSE,
comments => 'my comment here');
END;
/
【選択OKスクリプト:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_job_name',
job_type => 'STORED_PROCEDURE',
job_action => 'schema_name.procedure_name',
start_date => '24-OCT-16 08.00.00 PM',
repeat_interval => 'FREQ=DAILY;BYHOUR=20;',
-- max_run_duration => INTERVAL '4' HOUR,
auto_drop => FALSE,
comments => 'my comment here');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => 'my_job_name',
attribute => 'max_run_duration',
value => INTERVAL '4' HOUR
);
END;
/