前へ
前へ
 
次へ
次へ

APEX_PLSQL_JOBパッケージの理解

APEX_PLSQL_JOBは、Oracle Databaseで提供されるDBMS_JOB機能をラップしたラッパー・パッケージです。APEX_PLSQL_JOBパッケージでは、PL/SQLをバックグラウンドで実行するために必要な機能のみが公開されることに注意してください。APEX_PLSQL_JOB パッケージの記述を次に示します。

SQL> DESC APEX_PLSQL_JOB
FUNCTION JOBS_ARE_ENABLED RETURNS BOOLEAN
PROCEDURE PURGE_PROCESS
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
FUNCTION SUBMIT_PROCESS RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_SQL                          VARCHAR2                IN
 P_WHEN                         VARCHAR2                IN     DEFAULT
 P_STATUS                       VARCHAR2                IN     DEFAULT
FUNCTION TIME_ELAPSED RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
PROCEDURE UPDATE_JOB_STATUS
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
 P_STATUS                       VARCHAR2                IN                         

表「コレクションのマージに使用可能な引数」は、APEX_PLSQL_JOBパッケージで使用可能なファンクションについて説明しています。

APEX_PLSQL_JOBパッケージ: 使用可能なファンクション

ファンクションまたはプロシージャ 説明

SUBMIT_PROCESS

このプロシージャを使用すると、バックグラウンドPL/SQLを送信できます。このプロシージャは、一意のジョブ番号を戻します。このジョブ番号は、このパッケージ内の他のプロシージャおよびファンクションの参照点として使用できるため、自分のスキーマ内に格納しておくと役に立ちます。

UPDATE_JOB_STATUS

このプロシージャをコールすると、現在実行しているジョブのステータスを更新できます。このプロシージャは、送信されたPL/SQLからコールされたときに最も有効です。

TIME_ELAPSED

このファンクションを使用すると、ジョブが送信されてから経過した時間を確認できます。

JOBS_ARE_ENABLED

このファンクションをコールすると、そのデータベースが現在、APEX_PLSQL_JOBパッケージへのジョブの送信をサポートするモードであるかどうかを確認できます。

PURGE_PROCESS

このプロシージャをコールすると、送信されたジョブをクリーンアップできます。送信されたジョブは、Oracle Application Expressによってそれらのレコードがクリーンアップされるか、またはPURGE_PROCESSのコールによって手動で削除するまで、APEX_PLSQL_JOBSビューに保持されます。


APEX_PLSQL_JOBパッケージに送信したすべてのジョブは、APEX_PLSQL_JOBSビューで表示できます。APEX_PLSQL_JOBSビューの記述を次に示します。

SQL> DESCRIBE APEX_PLSQL_JOBS
 Name                              Null?    Type
 --------------------------------- -------- ----------------------------
 ID                                         NUMBER
 JOB                                        NUMBER
 FLOW_ID                                    NUMBER
 OWNER                                      VARCHAR2(30)
 ENDUSER                                    VARCHAR2(30)
 CREATED                                    DATE
 MODIFIED                                   DATE
 STATUS                                     VARCHAR2(100)
 SYSTEM_STATUS                              VARCHAR2(4000)
 SYSTEM_MODIFIED                            DATE
 SECURITY_GROUP_ID                          NUMBER

表「APEX_PLSQL_JOBSビュー列」は、APEX_PLSQL_JOBSビューで使用可能な列について説明しています。

APEX_PLSQL_JOBSビュー列

名前 説明

ID

列ごとに一意の識別子です。

JOB

送信された各PL/SQLジョブに割り当てられたジョブ番号です。この値を戻すには、APEX_PLSQL_JOB.SUBMIT_PROCESSファンクションを使用します。これは、APEX_PLSQL_JOBパッケージ内の他のプロシージャおよびファンクションに渡す値でもあります。

FLOW_ID

このジョブの送信元のアプリケーションです。

OWNER

アプリケーションを所有するデータベース・スキーマです。この値は、DBMS_JOBがこのコードを実行する際に、コードを解析するスキーマを識別します。

ENDUSER

このプロセスを送信させたエンド・ユーザー(アプリケーションにログインしたユーザー)です。

CREATED

ジョブが送信された日付です。

MODIFIED

ステータスが変更された日付です。

STATUS

このジョブに対してユーザーが定義したステータスです。この列を更新するには、APEX_PLSQL_JOB.UPDATE_JOB_STATUSをコールします。

SYSTEM_STATUS

このジョブに対してシステムが定義したステータスです。

SYSTEM_MODIFIED

システム・ステータスが変更された日付です。

SECURITY_GROUP_ID

作業領域に割り当てられた一意のIDです。開発者は、自分の作業領域から送信されたジョブのみを参照できます。



参照:

Oracle Application Express APIリファレンスの「APEX_PLSQL_JOBS」