EVALUATE_CALENDAR_STRING

CREATE_SCHEDULE 手順でスケジュールを作成するときに指定した repeat_interval 値を評価するには、 EVALUATE_CALENDAR_STRING 手順を使用します。 EVALUATE_CALENDAR_STRING プロシージャは、実際にジョブをスケジュールせずに、指定されたスケジュールが実行される日付と時刻を返します。

EVALUATE_CALENDAR_STRING プロシージャのシグネチャは次のとおりです。

EVALUATE_CALENDAR_STRING(
  <calendar_string> IN VARCHAR2,
  <start_date> IN TIMESTAMP WITH TIME ZONE,
  <return_date_after> IN TIMESTAMP WITH TIME ZONE,
  <next_run_date> OUT TIMESTAMP WITH TIME ZONE)

Parameters

calendar_string

calendar_string は、評価中の repeat_interval を説明するカレンダー文字列です。

start_date IN TIMESTAMP WITH TIME ZONE

start_date は、 repeat_interval が有効になる日時です。

return_date_after

repeat_interval を評価するときに EVALUATE_CALENDAR_STRING が開始日として使用する日付と時刻を指定するには、 return_date_after パラメーターを使用します。

たとえば、 return_date_after の値に 01-APR-13 09.00.00.000000, EVALUATE_CALENDAR_STRING を指定すると、2013年4月1日以降のスケジュールの最初の反復の日付と時刻が返されます。

next_run_date OUT TIMESTAMP WITH TIME ZONE

next_run_dateOUT パラメーターで、 return_date_after パラメーターで指定された日付の後のスケジュールの最初のオカレンスが含まれます。

Example

次の例では、カレンダー文字列を評価し、2013年6月15日以降にスケジュールが実行される最初の日付と時刻を返します。

DECLARE
  result     TIMESTAMP;
BEGIN

  DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING
  (
    'FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI;BYHOUR=17;',
    '15-JUN-2013', NULL, result
  );

    DBMS_OUTPUT.PUT_LINE('next_run_date: ' || result);
END;
/

next_run_date: 17-JUN-13 05.00.00.000000 PM

2013年6月15日は土曜日です。スケジュールは2013年6月17日月曜日の午後5時まで実行されません。