SUBMIT プロシージャー - ジョブ定義を作成してデータベースに保管する

SUBMIT プロシージャーはジョブ定義を作成して、それをデータベースに保管します。

ジョブを構成するのは、ジョブ ID、実行されるストアード・プロシージャー、ジョブが最初に実行される時、およびジョブが実行される次回の日時を計算する日付関数です。

構文

構文図を読む構文図をスキップするDBMS_JOB.SUBMIT(job ,what,next_date,interval,no_parse)

パラメーター

job
ジョブに割り当てられた ID を指定する、タイプ DECIMAL(20) の出力引数。
what
動的に実行可能な SQL ステートメントの名前を指定する、タイプ VARCHAR(1024) の入力引数。
next_date
ジョブが実行される次回の日時を指定する、タイプ TIMESTAMP(0) のオプションの入力引数。 デフォルトは SYSDATE です。
interval
評価の結果として、次回実行された後の実行の日時を示す日付関数を指定する、タイプ VARCHAR(1024) のオプションの入力引数。 interval が NULL に設定された場合には、ジョブは 1 回だけ実行されます。 NULL がデフォルトです。
no_parse
タイプ BOOLEAN のオプションの入力引数。 true に設定された場合には、ジョブ作成時に SQL ステートメントの構文検査を行わず、その代わりに、ジョブが最初に実行されるときにだけ構文検査を実行します。 false に設定された場合には、ジョブ作成時に SQL ステートメントの構文検査を行います。 デフォルトは false です。

許可

DBMS_JOB モジュールに対する EXECUTE 特権。

例 1: 次の例では、ストアード・プロシージャー job_proc を使用してジョブを作成します。 ジョブはまず、約 5 分以内に実行され、その後は interval 引数の SYSDATE + 1 の設定に従って、1 日に 1 回実行されます。
SET SERVEROUTPUT ON@

BEGIN
  DECLARE jobid           INTEGER;
  CALL DBMS_JOB.SUBMIT(jobid,'CALL job_proc();',SYSDATE + 5 minutes, 'SYSDATE + 1');
  CALL DBMS_OUTPUT.PUT_LINE('jobid: ' || jobid);
END@
このコマンドからの出力は、次のようになります。
SET SERVEROUTPUT ON
Db20000I  The SET SERVEROUTPUT command completed successfully.

BEGIN
  DECLARE jobid           INTEGER;
  CALL DBMS_JOB.SUBMIT(jobid,'CALL job_proc();',SYSDATE + 5 minutes, 'SYSDATE + 1');
  CALL DBMS_OUTPUT.PUT_LINE('jobid: ' || jobid);
END
Db20000I  The SQL command completed successfully.

jobid: 1