ホームページ  >  記事  >  データベース  >  Oracle のスケジュールされたタスクを一定期間内に定期的に実行するように設定する方法

Oracle のスケジュールされたタスクを一定期間内に定期的に実行するように設定する方法

下次还敢
下次还敢オリジナル
2024-04-18 15:54:181004ブラウズ

Oracle で指定した期間内に定期的に実行されるタスクを設定するには、トリガーとジョブを作成する必要があります。 1. トリガーを使用して、実行期間 (開始日と終了日) と実行するタスクを指定します。 2. ジョブを使用して、トリガーの名前、実行開始日、および繰り返しの頻度を指定します。

Oracle のスケジュールされたタスクを一定期間内に定期的に実行するように設定する方法

Oracle で指定した期間内に定期的に実行されるタスクを設定する方法

Oracle データベースでは、 DBMS_JOB パッケージを使用して、スケジュールされたタスクを作成および管理できます。一定期間内に定期的に実行されるタスクを設定するには、次の手順に従ってください。

1. トリガーを作成します

次のステートメントを使用して作成します。トリガー。このトリガーは、指定された期間内に指定された PL/SQL ブロックを実行します:

<code class="sql">CREATE OR REPLACE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
  IF (SYSDATE BETWEEN start_date AND end_date) THEN
    -- 在此执行要执行的任务
  END IF;
END;</code>

ここで:

  • trigger_name はトリガーの名前です。 。
  • start_date は、タスクの実行が開始される日時です。
  • end_date は、タスクの実行が終了する日時です。

2. ジョブを作成します

次のステートメントを使用して、トリガーを呼び出すジョブを作成します:

<code class="sql">BEGIN
  DBMS_JOB.SUBMIT(
    job => job_name,
    next_date => start_date,
    interval => 'freq=(seconds=60, minutes=0, hours=0, days=0, weeks=0, months=0, years=0)',
    what => 'BEGIN ' || trigger_name || '; END;'
  );
END;</code>

ここで:

  • job_name はジョブの名前です。
  • start_date は、ジョブの実行が開始される日時です。
  • interval ジョブを実行する頻度を指定します (この場合は 60 秒ごと)。
  • what 実行する PL/SQL ブロックを指定します。

毎日午前 9 時から午後 5 時までの間、1 時間ごとに実行されるタスクを作成するには、次のコードを使用できます。

<code class="sql">CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT/UPDATE/DELETE ON my_table
FOR EACH ROW
BEGIN
  IF (SYSDATE BETWEEN TO_DATE('2023-03-08 09:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('2023-03-08 17:00:00', 'YYYY-MM-DD HH24:MI:SS')) THEN
    -- 在此执行要执行的任务
  END IF;
END;

BEGIN
  DBMS_JOB.SUBMIT(
    job => my_job,
    next_date => TO_DATE('2023-03-08 09:00:00', 'YYYY-MM-DD HH24:MI:SS'),
    interval => 'freq=(seconds=0, minutes=60, hours=0, days=0, weeks=0, months=0, years=0)',
    what => 'BEGIN my_trigger; END;'
  );
END;</code>

以上がOracle のスケジュールされたタスクを一定期間内に定期的に実行するように設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。