1

毎日午前 1 時に実行される DBMS_JOB を使用して作成されたジョブがあります。

    WHAT        PROC_XYZ();
    NEXT_DATE   16-OCT-13
    NEXT_SEC    01:00:00
    INTERVAL    trunc(sysdate)+1+1/24

特定の日付 (パターンや固定間隔なし) で実行するように変更したい。たとえば、2013 年 10 月 30 日、2013 年 11 月 14 日、2013 年 11 月 18 日

ジョブを実行する日付のリストを指定する方法はありますか?

4

1 に答える 1

2

いいえ。

ただし、ジョブを実行する日付のリストを作成し、手順を実行する前に現在の日付がそれらの日付のいずれかであるかどうかを確認できます。RETURNステートメントは、プロシージャ内で実行されるとすぐに、呼び出し元のコードに制御を返します。

したがって、プロシージャの最初に実行される行に次のようなものを追加します。

if trunc(sysdate) not in (date '2013-10-30', date '2013-11-14') then
   return;
end if;

コードを変更せずに簡単に変更できるように、おそらく日付のリストではなくテーブルを使用します。ジョブを毎日実行すると、すべての日にすぐに終了しますが、完全に実行したい日は終了します。

DBMS_JOBドキュメントの上部にあるメモを読む価値があります。

DBMS_JOB パッケージは DBMS_SCHEDULER パッケージに置き換えられました。特に、システム負荷を管理するためにジョブを管理している場合は、ユーザーのパッケージ実行権限を取り消して DBMS_JOB を無効にすることを検討する必要があります。

于 2013-10-15T17:33:58.050 に答える