APEX_APPLICATION_INSTALL
パッケージには、Application Expressアプリケーションのインストール・プロセス中にアプリケーション属性を変更するためのメソッドが多数用意されています。
トピック:
Oracle Application ExpressでApplication Expressインスタンスにアプリケーションをインポートする場合、次の2つの方法があります。
アプリケーションのエクスポート・ファイルをアップロードおよびインストールする(Application ExpressのWebインタフェースを使用)。
アプリケーションのエクスポート・ファイルをSQLスクリプトとして実行する(通常は、コマンドライン・ユーティリティのSQL*Plusで実行)。
Application ExpressのWebインタフェースのファイル・アップロード機能を使用すると、開発者は異なるアプリケーションID、異なるワークスペースIDおよび異なる解析スキーマでアプリケーションをインポートできます。ただし、SQL*Plusなどのコマンドライン・ツールを使用してアプリケーションをインポートする場合は、アプリケーションのエクスポート・ファイルを直接変更しないかぎり、これらの属性(アプリケーションID、ワークスペースID、解析スキーマ)を変更することはできません。
コマンドライン・ユーティリティまたは非Webベースのインストーラによるデプロイを意図されたアプリケーションの作成が多くなると、Application Expressユーザーは、いずれのApplication Expressインスタンスの任意のワークスペースにアプリケーションをどのようにインポートするかという課題に直面します。
もう1つの一般的なシナリオとして、トレーニング・クラスがあり、50の異なるワークスペースへのアプリケーションのインストールに、すべて同じアプリケーション・エクスポート・ファイルを使用します。ユーザーは、現在は、アプリケーションのエクスポート・ファイルにユーザー独自のグローバル変数を追加し、、インストール時にこれらのグローバルの値を変更することで対処しています。ただし、このようにアプリケーションのエクスポート・ファイルの手動による変更(通常はエクスポート後にsedまたはawkスクリプトを実行)は、不要であるべきです。
Application Express 4.0以上には、APEX_APPLICATION_INSTALL APIが含まれます。このPL/SQL APIには、Application Expressアプリケーション・インストール・プロセス中にアプリケーション属性を設定するためのメソッドが多数用意されています。Application Express 4.0以上のすべてのエクスポート・ファイルには、APEX_APPLICATION_INSTALL APIで設定された値への参照が含まれています。ただし、このAPIのメソッドはデフォルトのアプリケーション・インストール動作をオーバーライドするためにのみ使用します。
APEX_APPLICATION_INSTALLで操作する属性
下の表は、このAPIのファンクションによって設定できる属性を示しています。
表2-1 APEX_APPLICATION_INSTALL APIで操作する属性
属性 | 説明 |
---|---|
|
インポートされるアプリケーションのワークスペースID。「GET_WORKSPACE_IDファンクション」、「SET_WORKSPACE_IDプロシージャ」を参照してください。 |
|
インポートされるアプリケーションのアプリケーションID。「GENERATE_APPLICATION_IDプロシージャ」、「GET_APPLICATION_IDファンクション」、「SET_APPLICATION_IDプロシージャ」を参照してください。 |
|
アプリケーション・インポート中に使用されるオフセット値。「GENERATE_OFFSETプロシージャ」、「GET_OFFSETファンクション」、「SET_OFFSETプロシージャ」を参照してください。 |
|
インポートされるアプリケーションの解析スキーマ("owner")。「GET_SCHEMAファンクション」、「SET_SCHEMAプロシージャ」を参照してください。 |
|
インポートされるアプリケーションのアプリケーション名。「GET_APPLICATION_NAMEファンクション」、「SET_APPLICATION_NAMEプロシージャ」を参照 |
別名 |
インポートされるアプリケーションのアプリケーションの別名。「GET_APPLICATION_ALIASファンクション」、「SET_APPLICATION_ALIASプロシージャ」を参照してください。 |
イメージ接頭辞 |
インポートされるアプリケーションのイメージ接頭辞。「GET_IMAGE_PREFIXファンクション」、「SET_IMAGE_PREFIXプロシージャ」を参照してください。 |
プロキシ |
インポートされるアプリケーションのプロキシ・サーバ属性。「GET_PROXYファンクション」、「SET_PROXYプロシージャ」を参照してください。 |
開発インスタンス上のワークスペースFRED_DEVを使用して、アプリケーション645のアプリケーション・エクスポートを生成して、ファイルf645.sqlとして保存します。このセクションのすべての例は、SQL*Plusに接続していることを前提としています。
同じアプリケーションIDを使用して、同じ開発インスタンスのFRED_DEVワークスペースにこのアプリケーションをインポートするには、次のようにします。
@f645.sql
アプリケーションIDの指定によるアプリケーションのインポート
アプリケーションID 702を使用して、同じ開発インスタンスのFRED_DEVワークスペースにこのアプリケーションをインポートするには、次のようにします。
begin apex_application_install.set_application_id( 702); apex_application_install.generate_offset; apex_application_install.set_application_alias( 'F' || apex_application.get_application_id ); end; / @645.sql
アプリケーションIDの生成によるアプリケーションのインポート
Application Expressで生成される使用可能なアプリケーションIDを使用して、同じ開発インスタンスのFRED_DEVワークスペースにこのアプリケーションをインポートするには、次のようにします。
begin apex_application_install.generate_application_id; apex_application_install.generate_offset; apex_application_install.set_application_alias( 'F' || apex_application.get_application_id ); end; / @f645.sql
異なるスキーマを使用した異なるワークスペースへのアプリケーションのインポート
スキーマFREDDYを使用して、ワークスペースIDを使用して本番インスタンスのFRED_PRODワークスペースにこのアプリケーションをインポートするには、次のようにします(FRED_DEVおよびFRED_PRODのワークスペースIDは異なります)。
declare l_workspace_id number; begin select workspace_id into l_workspace_id from apex_workspaces where workspace = 'FRED_PROD'; -- apex_application_install.set_workspace_id( l_workspace_id ); apex_application_install.generate_offset; apex_application_install.set_schema( 'FREDDY' ); apex_application_install.set_application_alias( 'FREDPROD_APP' ); end; / @f645.sql
3つの異なるワークスペースのトレーニング・インスタンスへのインポート
このアプリケーションを3つの異なるワークスペースのトレーニング・インスタンスにインポートするには、次のようにします。
declare l_workspace_id number; begin select workspace_id into l_workspace_id from apex_workspaces where workspace = 'TRAINING1'; -- apex_application_install.set_workspace_id( l_workspace_id ); apex_application_install.generate_application_id; apex_application_install.generate_offset; apex_application_install.set_schema( 'STUDENT1' ); apex_application_install.set_application_alias( 'F' || apex_application.get_application_id ); end; / @f645.sql declare l_workspace_id number; begin select workspace_id into l_workspace_id from apex_workspaces where workspace = 'TRAINING2'; -- apex_application_install.set_workspace_id( l_workspace_id ); apex_application_install.generate_application_id; apex_application_install.generate_offset; apex_application_install.set_schema( 'STUDENT2' ); apex_application_install.set_application_alias( 'F' || apex_application.get_application_id ); end; / @f645.sql declare l_workspace_id number; begin select workspace_id into l_workspace_id from apex_workspaces where workspace = 'TRAINING3'; -- apex_application_install.set_workspace_id( l_workspace_id ); apex_application_install.generate_application_id; apex_application_install.generate_offset; apex_application_install.set_schema( 'STUDENT3' ); apex_application_install.set_application_alias( 'F' || apex_application.get_application_id ); end; / @f645.sql
このプロシージャはインスタンスで使用可能なアプリケーションIDを生成して、APEX_APPLICATION_INSTALLでアプリケーションIDを設定します。
構文
APEX_APPLICATION_INSTALL.GENERATE_APPLICATION_ID;
パラメータ
なし。
例
このプロシージャ・コールの例については、「アプリケーションIDの生成によるアプリケーションのインポート」および「3つの異なるワークスペースのトレーニング・インスタンスへのインポート」を参照してください。
このプロシージャは、アプリケーションのインポート中に使用されるオフセット値を生成します。このオフセット値は、Application Expressアプリケーション定義のメタデータがインスタンスの他のメタデータと競合しないようにするために使用します。新規アプリケーション・インストールの場合は、通常、このプロシージャをコールしてApplication Expressでこのオフセット値を生成するだけで十分です。
構文
APEX_APPLICATION_INSTALL.GENERATE_OFFSET;
パラメータ
なし。
例
このプロシージャ・コールの例については、「アプリケーションIDの指定によるアプリケーションのインポート」、「アプリケーションIDの生成によるアプリケーションのインポート」および「3つの異なるワークスペースのトレーニング・インスタンスへのインポート」を参照してください。
このファンクションは、インポートされるアプリケーションのアプリケーション別名を取得します。これは、インポートされるアプリケーションに別名が指定されている場合にのみ使用します。アプリケーションの別名はワークスペースで一意である必要があります。また、インスタンスでも一意であることをお薦めします。
構文
APEX_APPLICATION_INSTALL.GET_APPLICATION_ALIAS RETURN VARCHAR2;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のアプリケーションの別名の値を戻します。アプリケーションの別名は、255文字以下である必要があります。
declare l_alias varchar2(255); begin l_alias := apex_application_install.get_application_alias; end;
このファンクションを使用して、インポートされるアプリケーションのアプリケーションIDを取得します。アプリケーションIDはインスタンス内に存在しないか、存在する場合はアプリケーションがインポートされるワークスペース内に存在する必要があります。
構文
APEX_APPLICATION_INSTALL.GET_APPLICATION_ID RETURN NUMBER;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のアプリケーションIDの値を戻します。
declare l_id number; begin l_id := apex_application_install.get_application_id; end;
このファンクションは、インポート・アプリケーションのアプリケーション名を取得します。
構文
APEX_APPLICATION_INSTALL.GET_APPLICATION_NAME RETURN VARCHAR2;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のアプリケーション名の値を戻します。
declare l_application_name varchar2(255); begin l_application_name := apex_application_install.get_application_name; end;
このファンクションはインポート・アプリケーションのイメージ接頭辞を取得します。ほとんどのApplication Expressインスタンスはデフォルトのイメージ接頭辞/i/を使用します。
構文
APEX_APPLICATION_INSTALL.GET_IMAGE_PREFIX RETURN VARCHAR2;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のアプリケーションのイメージ接頭辞の値を戻します。アプリケーションのイメージ接頭辞は、255文字以下である必要があります。
declare l_image_prefix varchar2(255); begin l_image_prefix := apex_application_install.get_image_prefix; end;
このファンクションを使用して、インポートされるアプリケーションのプロキシ・サーバー属性を取得します。
構文
APEX_APPLICATION_INSTALL.GET_PROXY RETURN VARCHAR2;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のプロキシ・サーバ属性の値を戻します。プロキシ・サーバ属性は255文字以下である必要があります。
declare l_proxy varchar2(255); begin l_proxy := apex_application_install.get_proxy; end;
このファンクションを使用して、Application Expressアプリケーションの解析スキーマ("owner")を取得します。
構文
APEX_APPLICATION_INSTALL.GET_SCHEMA RETURN VARCHAR2;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のアプリケーション・スキーマの値を戻します。
declare l_schema varchar2(30); begin l_schema := apex_application_install.get_schema; end;
このファンクションを使用して、インポートされるアプリケーションのワークスペースIDを取得します。
構文
APEX_APPLICATION_INSTALL.GET_WORKSPACE_ID RETURN NUMBER;
パラメータ
なし。
例
次の例は、APEX_APPLICATION_INSTALL
パッケージ内のワークスペースIDの値を戻します。
declare l_workspace_id number; begin l_workspace_id := apex_application_install.get_workspace_id; end;
このプロシージャは、インポートされるアプリケーションのアプリケーション別名を設定します。これは、インポートされるアプリケーションに別名が指定されている場合にのみ使用します。アプリケーションの別名はワークスペースで一意である必要があります。また、インスタンスでも一意であることをお薦めします。
構文
APEX_APPLICATION_INSTALL.SET_APPLICATION_ALIAS( p_application_alias IN VARCHAR2);
パラメータ
表2-2では、SET_APPLICATION_ALIASプロシージャで使用可能なパラメータについて説明します。
表2-2 SET_APPLICATION_ALIASのパラメータ
パラメータ | 説明 |
---|---|
|
アプリケーションの別名。アプリケーションの別名は英数字の識別子です。255文字以下で、ワークスペース内で一意である必要があります(インスタンス全体で一意であることをお薦めします)。 |
例
このプロシージャ・コールの例については、「アプリケーションIDの指定によるアプリケーションのインポート」、「アプリケーションIDの生成によるアプリケーションのインポート」、「異なるスキーマを使用した異なるワークスペースへのアプリケーションのインポート」および「3つの異なるワークスペースのトレーニング・インスタンスへのインポート」を参照してください。
このプロシージャを使用して、インポートされるアプリケーションのアプリケーションIDを設定します。アプリケーションIDはインスタンス内に存在しないか、存在する場合はアプリケーションがインポートされるワークスペース内に存在する必要があります。この数値は、正の整数であり、Application ExpressアプリケーションIDの予約範囲内の値ではない必要があります。
構文
APEX_APPLICATION_INSTALL.SET_APPLICATION_ID ( p_application_id IN NUMBER);
パラメータ
表2-3では、SET_APPLICATION_ID
プロシージャで使用可能なパラメータについて説明します。
表2-3 SET_APPLICATION_IDのパラメータ
パラメータ | 説明 |
---|---|
|
アプリケーションID。アプリケーションIDは正の整数であり、アプリケーションIDの予約範囲内(3000から8999まで)の値であることはできません。つまり、3000未満または9000以上である必要があります。 |
例
このプロシージャ・コールの例については、「アプリケーションIDの指定によるアプリケーションのインポート」を参照してください。
このプロシージャは、インポート・アプリケーションのアプリケーション名を設定します。
構文
APEX_APPLICATION_INSTALL.SET_APPLICATION_NAME;( p_application_name IN VARCHAR2);
パラメータ
表2-4では、SET_APPLICATION_NAME
プロシージャで使用可能なパラメータについて説明します。
表2-4 SET_APPLICATION_NAMEのパラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション名。アプリケーション名にNULLまたは255文字より長い名前を指定できません。 |
例
次の例は、APEX_APPLICATION_INSTALL
でアプリケーション名をExecutive Dashboardに設定します。
declare l_name varchar2(255) := 'Executive Dashboard'; begin apex_application_install.set_application_name( p_application_name => l_name ); end;
このプロシージャは、インポート・アプリケーションのイメージ接頭辞を設定します。ほとんどのApplication Expressインスタンスはデフォルトのイメージ接頭辞/i/を使用します。
構文
APEX_APPLICATION_INSTALL.SET_IMAGE_PREFIX( p_image_prefix IN VARCHAR2);
パラメータ
表2-4では、SET_IMAGE_PREFIX
プロシージャで使用可能なパラメータについて説明します。
例
次の例は、APEX_APPLICATION_INSTALL
でイメージ接頭辞変数の値を設定します。
declare l_prefix varchar2(255) := '/i/'; begin apex_application_install.set_image_prefix( p_image_prefix => l_prefix ); end;
このプロシージャはアプリケーションのインポート中に使用されるオフセット値を設定します。このオフセット値は、Application Expressアプリケーション定義のメタデータがインスタンスの他のメタデータと競合しないようにするために使用します。新規アプリケーション・インストールの場合は、通常、generate_offset
プロシージャをコールしてApplication Expressでこのオフセット値を生成するだけで十分です。
構文
APEX_APPLICATION_INSTALL.SET_OFFSET( p_offset IN NUMBER);
パラメータ
表2-6では、SET_OFFSET
プロシージャで使用可能なパラメータについて説明します。
表2-6 SET_OFFSETのパラメータ
パラメータ | 説明 |
---|---|
|
オフセット値。オフセットは正の整数である必要があります。ほとんどの場合は、オフセットを指定する必要はなく、かわりに |
例
次の例は、データベースから乱数を生成し、この乱数をAPEX_APPLICATION_INSTALL
でオフセット値として使用します。.
declare l_offset number; begin l_offset := dbms_random.value(100000000000, 999999999999); apex_application_install.set_offset( p_offset => l_offset ); end/
このプロシージャを使用して、インポートされるアプリケーションのプロキシ・サーバー属性を設定します。
構文
APEX_APPLICATION_INSTALL.SET_PROXY ( p_proxy IN VARCHAR2);
パラメータ
表2-7では、SET_PROXY
プロシージャで使用可能なパラメータについて説明します。
表2-7 SET_PROXYのパラメータ
パラメータ | 説明 |
---|---|
|
プロキシ・サーバー。デフォルト値はありません。プロキシ・サーバーは255文字以下である必要があります。http://などのプロトコル接頭辞を含める必要はありません。たとえば、 |
例
次の例は、APEX_APPLICATION_INSTALL
でプロキシ変数の値を設定します。
declare l_proxy varchar2(255) := 'www-proxy.company.com' begin apex_application_install.set_proxy( p_proxy => l_proxy ); end;
このファンクションを使用して、Application Expressアプリケーションの解析スキーマ("owner")を設定します。このスキーマのデータベース・ユーザーがすでに存在する必要があり、また、アプリケーションのインポートに使用するワークスペースに、このスキーマ名がすでにマップされている必要があります。
構文
APEX_APPLICATION_INSTALL.SET_SCHEMA ( p_schema IN VARCHAR2);
パラメータ
表2-8では、SET_SCHEMA
プロシージャで使用可能なパラメータについて説明します。
例
このプロシージャ・コールの例については、「異なるスキーマを使用した異なるワークスペースへのアプリケーションのインポート」および「3つの異なるワークスペースのトレーニング・インスタンスへのインポート」を参照してください。
このファンクションを使用して、インポートされるアプリケーションのワークスペースIDを設定します。
構文
APEX_APPLICATION_INSTALL.SET_WORKSPACE_ID ( p_workspace_id IN NUMBER);
パラメータ
表2-9では、SET_WORKSPACE_ID
プロシージャで使用可能なパラメータについて説明します。
例
このプロシージャ・コールの例については、「異なるスキーマを使用した異なるワークスペースへのアプリケーションのインポート」および「3つの異なるワークスペースのトレーニング・インスタンスへのインポート」を参照してください。