SUBMIT プロシージャー - ジョブ定義を作成してデータベースに保管する
SUBMIT プロシージャーはジョブ定義を作成して、それをデータベースに保管します。
ジョブを構成するのは、ジョブ ID、実行されるストアード・プロシージャー、ジョブが最初に実行される時、およびジョブが実行される次回の日時を計算する日付関数です。
構文
パラメーター
- 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