ヘッダーをスキップ

Oracle Applications開発者ガイド
リリース12
E06048-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

ユーザー・プロファイル

ユーザー・プロファイルの概要

ユーザー・プロファイルは、アプリケーションの実行方法に影響する変更可能なオプションです。Oracle Application Object Libraryは、ユーザーがログインまたは職責の変更を行ったときに、ユーザー・プロファイルの各オプションに対して値を1つ設定します。ユーザーは、プロファイル・オプションを随時変更できます。Oracle Application Object Libraryは、アプリケーションのユーザー・インタフェースを変更して個々のユーザー希望を満たすためにユーザーが設定できるオプションを多数サポートしています。

開発者は、ユーザーより多くのOracle Application Object Libraryベースのアプリケーション対応プロファイル・オプションを定義できます。開発者が定義したオプション値をユーザーが上書きしないようにするため、サイト、アプリケーション、職責、ユーザーの4つのレベルのうち1つ以上でオプションを定義できます。開発者は、システム管理者による参照や更新が可能なオプション値のレベルを選択できます。また、ユーザー・レベルで定義されたプロファイル・オプションの中で、ユーザーによる参照や更新が可能なオプションを決定します。

たとえば、エンド・ユーザーによる参照が可能な組織データを限定するユーザー・プロファイル・オプションを定義できます。開発者が定義したユーザー・プロファイル・オプションとOracle Application Object Libraryが提供しているユーザー・プロファイル・オプションは、システム管理者やエンド・ユーザーからは区別できません。

プロファイル・オプションの詳細は、『Oracle Applicationsシステム管理者ガイド』を参照してください。

定義

ユーザー・プロファイル・レベル

通常ユーザー・プロファイル・オプションには、サイト、アプリケーション、職責、ユーザーの4つのレベルがあります。Oracle Application Object Libraryは、ユーザー・プロファイル・レベルを階層として扱います。階層のレベルは、高いものからユーザー、職責、アプリケーション、サイトの順になります。オプション値は、より高いレベルのオプション値に上書きされます。

通常、各ユーザー・プロファイル・オプションはレベルごとに存在しています。たとえば、Oracle Application Object Libraryには、サイト・レベルの「プリンタ」オプション、アプリケーション・レベルの「プリンタ」オプションなどがあります。Oracle Application Object Libraryは、高レベルのオプション値によって低レベルのオプション値が確実に上書きされるようにレベル階層に従って実行されます。すなわち、「プリンタ」の値がサイト・レベルでは「ニューヨーク」、ユーザー・レベルでは「ボストン」である場合、レポートはボストンのプリンタで印刷されます。

サイト・レベル

サイトは、ユーザー・プロファイル・レベルの中で最も低いレベルです。サイト・レベルのオプション値は、ある構成におけるすべてのアプリケーションの実行方法に影響を与えます。

アプリケーション・レベル

アプリケーションは、サイトのすぐ上位のユーザー・プロファイル・レベルです。アプリケーション・レベルのオプション値は、特定のアプリケーションの実行方法に影響を与えます。

職責レベル

職責は、アプリケーションのすぐ上位のユーザー・プロファイル・レベルです。職責レベルのオプション値は、ある職責を持つすべてのユーザーのアプリケーション実行方法に影響を与えます。

ユーザー・レベル

ユーザーは、最も高いレベルのユーザー・プロファイルで、職責のすぐ上位のレベルです。ユーザー・レベルのオプション値は、特定のアプリケーション・ユーザーのアプリケーション実行方法に影響を与えます。

新規ユーザー・プロファイル・オプションの定義

新たにアプリケーションを開発する場合、アプリケーションの実行方法に反映されるユーザー・プロファイル・オプションを定義できます。たとえば、エンド・ユーザーによって参照が可能な組織データを限定するユーザー・プロファイル・オプションを定義できます。新規オプションを定義するときは、そのオプションに有効な値の基準を設定できます。さらに、エンド・ユーザーによるオプション値の変更の可否を設定することもできます。

ユーザー・プロファイル・オプション値は、Oracle Application Object Libraryルーチンを使用して取得できます。アプリケーションは、選択したプロファイル・オプション値に応答するよう構成できます。

ユーザー・プロファイル・オプション値の設定

システム管理者は、各プロファイル・レベルでユーザー・プロファイル・オプションに値を設定できます。新たに作成したプロファイル・オプションに対しては、システム管理者職責でデフォルト値を設定できます。通常、システム管理者は、Oracle Application Object Libraryベースのアプリケーションをサイトにインストールした後に、サイト・レベルのオプションを設定します。ここで設定されたサイト・レベルのオプション値は、システム管理者やエンド・ユーザーがそれより高いレベルで値を設定するまでの間、デフォルト値として使用されます。

Oracle Application Object Libraryは、各ユーザー・プロファイル・オプションに対する実行時の値を、システム管理者が各レベルで設定した値に基づいて導き出します。実行時のオプション値は、そのオプションに対して最も高いレベルで設定された値になります。たとえば、あるエンド・ユーザーに対して、プリンタ・オプションにサイト・レベルと職責レベルのみが設定されていると仮定します。このエンド・ユーザーがログインした場合、職責レベルで設定されている値をプリンタ・オプションとみなします。これは、職責レベルがこのオプションに対して設定された最も高いレベルであるためです。

ユーザー・プロファイル・オプションのデフォルト値が、どのレベルにおいても適切でない場合、システム管理者は値を随時変更できます。ここでの変更は、エンド・ユーザーが再度ログインまたは職責の変更を行うとすぐに反映されます。

個人ユーザー・プロファイルの設定

Oracle Application Object Libraryは、ログイン時や職責変更時にユーザー・プロファイル・オプションの値を設定します。ユーザーが変更可能なオプション値は、いつでも変更できます。

「個別プロファイル・オプションの更新」フォームからオプション値を変更します。このフォームを使用して、定義したすべてのオプションを表示し、システム管理者が設定したオプション値を確認できます。さらに、更新可能なオプション値であれば変更することもできます。ユーザー・レベル・プロファイル・オプションに対して行った変更は、すぐにそのセッションでアプリケーション実行方法に反映されます。再度ログインしても、前のセッションで変更したユーザー・レベル・オプションは有効になります。

ユーザー・オプションに値が設定されてない場合、ユーザー・プロファイル・オプションは、システム管理者が設定したサイト・レベル、アプリケーション・レベル、職責レベル、ユーザー・レベルのいずれかであるとみなされます。システム管理者のみがプロファイル・オプションを設定できます。

ユーザー・プロファイルの実装

ユーザー属性に基づいて、アプリケーションがユーザーごとに異なる反応を示すようにするには、ユーザー・プロファイル・オプションを定義する必要があります。

ユーザー・プロファイルはサイト、アプリケーション、職責、ユーザーの4つのレベルに存在しているので、最大限の柔軟性が実現されます。プロファイル・オプションの定義時に、システム管理者が各レベルでオプション値を設定できるかどうかを決定します。たとえば、すべてのレベルで参照可能かつ更新可能なVIEW_SECURE_INFORMATIONオプションを定義できます。これによってシステム管理者は、個々のユーザー用の値を含め、すべてのレベルで値を設定できます。さらに、エンド・ユーザーが値の参照または変更をできないようにするオプションも定義できます。

Oracle Application Object Libraryには、ユーザーのニーズに応じて設定できるように多数のオプションがあります。これらのオプションや開発時に定義したプロファイル・オプションは、アプリケーション・フォームやコンカレント・プログラムの中で使用できます。

定義済ユーザー・プロファイル・オプション

データベース・プロファイル・オプション

Oracle Application Object Libraryでは、Oracleシステム管理者またはユーザーが参照および更新可能なユーザー・プロファイル・オプションが多数準備されています。『Oracle Applicationsシステム管理者ガイド』には、定義済プロファイル・オプションのリストが記載されています。

内部生成プロファイル・オプション

Oracle Application Object Libraryには、ユーザー・プロファイル・ルーチンを介してアクセス可能なプロファイル・オプションも準備されています。これらのプロファイル・オプションの値はフォームやプログラムの中で取得できますが、CONC_PRINT_OUTPUTおよびCONC_PRINT_STYLE以外は値を変更できません。システム管理者とエンド・ユーザーは、これらのプロファイル・オプションの値を参照することも変更することもできません。

変数 説明
USERNAME ユーザーの現行Oracle Application Object Libraryユーザー名。
USER_ID ユーザーの現行Oracle Application Object LibraryユーザーID。
RESP_ID ユーザーの現行の職責ID。
APPL_SHRT_ NAME ユーザーの現行職責に関連したアプリケーションの短縮名。
RESP_APPL_ID ユーザーの現行職責に関連したアプリケーションID。
FORM_NAME 現行フォームの名前。コンカレント・プログラムでは使用できません。
FORM_ID 現行フォームのフォームID。コンカレント・プログラムでは使用できません。
FORM_APPL_ NAME 現行フォームが登録されているアプリケーションの名前。コンカレント・プログラムでは使用できません。
FORM_APPL_ID 現行フォームが登録されているアプリケーションのアプリケーションID。コンカレント・プログラムでは使用できません。
LOGON_DATE 現行のセッションにユーザーがログインした日付。
LAST_LOGON_ DATE 直前のセッションにユーザーがログインした日付。
LOGIN_ID Oracle Application Object Libraryにおけるユーザーのサインオン監査ログインID。
CONC_ REQUEST_ID 現在実行中のプログラムの特定のインスタンスに関連する要求ID。コンカレント・プログラムでは、このプロファイル・オプションのみが使用可能です。このプロファイル・オプションは、REQUEST_IDのWHO列に使用されます。
CONC_ PROGRAM_ID 現在実行中のプログラムに関連するプログラムID。コンカレント・プログラムでは、このプロファイル・オプションのみが使用可能です。このプロファイル・オプションは、PROGRAM_IDのWHO列に使用されます。
CONC_ PROGRAM_ APPLICATION_ ID 現在実行中のプログラムに関連するアプリケーションID。コンカレント・プログラムでは、このプロファイル・オプションのみが使用可能です。このプロファイル・オプションは、PROGRAM_APPLICATION_IDのWHO列に使用されます。
CONC_LOGIN_ ID 現在実行中のプログラムに関連するログインID。コンカレント・プログラムでは、このプロファイル・オプションのみが使用可能です。このプロファイル・オプションは、LAST_UPDATE_LOGINのWHO列に使用されます。
CONC_PRINT_ OUTPUT コンカレント・プログラムの登録時に「印刷出力」フィールドに入力した「Yes」、「No」の値。現在実行しているプログラムの特定のインスタンスに対するこのプロファイル・オプションの値は、コンカレント・プログラムからafpoput()ルーチンを使用して変更できます。このプロファイル・オプションによって、コンカレント・マネージャがコンカレント・プログラムの出力をプリンタに印刷するかどうかが設定されます。
CONC_PRINT_ STYLE コンカレント・プログラムの登録時に「印刷形式」フィールドに入力した、コンカレント・プログラムの出力の印刷形式。現在実行しているプログラムの特定のインスタンスに対するこのプロファイル・オプションの値は、コンカレント・プログラムからafpoput()ルーチンを使用して変更できます。

FND_PROFILE: ユーザー・プロファイルAPI

この項では、PL/SQLプロシージャで使用可能なユーザー・プロファイルAPIについて説明します。これらのユーザー・プロファイル・ルーチンを使用して、クライアントおよびサーバーのユーザー・プロファイル・キャッシュに格納されているオプション値を操作できます。

クライアント上では、1つのユーザー・プロファイル・キャッシュが複数のフォーム・セッションで共有されます。すなわち、フォームAとフォームBが同一のクライアント上で実行されているときに、フォームAがクライアントのユーザー・プロファイル・キャッシュに対して行った変更は、フォームBの実行時環境に影響を与えます。逆の場合も同様です。

サーバー上では、フォーム・セッション毎にユーザー・プロファイル・キャッシュを所有しています。すなわち、フォームAとフォームBが同一のクライアントで実行されている場合でも、サーバー・プロファイル・キャッシュは別々になっています。フォームAのセッションで変更されたサーバー・プロファイル値が、フォームBのセッションに影響を与えることはありません。逆の場合も同様です。

同様に、コンカレント・プログラムのサーバー側のプロファイル・キャッシュも別々になっています。ただし、PL/SQLルーチンによってアクセスされたサーバー側のプロファイル・キャッシュは、Cコードのキャッシュと同期していない点に注意してください。PL/SQLルーチンを使用して値を挿入した場合、この値をCコードのルーチンで読むことはできません。

これらのルーチンを使用して変更したプロファイル・オプション値は、実行時環境のみに反映されます。プログラムが終了すると、(プロファイル・キャッシュを保持していた)データベース・セッションが終了されるため、値の変更による影響も終了します。データベースに格納されているプロファイル・オプションのデフォルト値を変更するには、「ユーザー・プロファイル」フォームを使用する必要があります。

FND_PROFILE.PUT

要約

 procedure FND_PROFILE.PUT

      (name IN varchar2,

       valueIN varchar2);

場所

FNDSQFライブラリおよびデータベース(ストアド・プロシージャ)

説明

指定されたユーザー・プロファイル・オプションに値を代入します。オプションがない場合は、PUTを使用してオプションを作成することもできます。

すべてのPUT操作はローカルで実行されます。すなわち、サーバー上のPUTはサーバー側のプロファイル・キャッシュのみに反映され、クライアント上のPUTはクライアント側のキャッシュのみに反映されます。PUT,を使用すると、サーバー側とクライアント側のプロファイル・キャッシュの同期が崩れます。このため、PUT.の使用は推奨されていません。

引数(入力)

変数 説明
name 設定するプロファイル・オプションの(開発者の)名前。
value 指定したプロファイル・オプションに設定する値。

FND_PROFILE.GET

 procedure FND_PROFILE.GET

     (name IN varchar2,

      value OUT varchar2);

場所

FNDSQFライブラリおよびデータベース(ストアド・プロシージャ)

説明

指定されたユーザー・プロファイル・オプションの現在の値を取得します。プロファイルが存在しない場合はNULLとなります。すべてのGET操作はローカルで実行されます。すなわち、サーバー上でGETした場合にはサーバー側のキャッシュから値を取得し、クライアント上でGETした場合はクライアント側のキャッシュから値を取得します。

サーバー側のPL/SQLパッケージであるFND_GLOBALは、ストアド・プロシージャから挿入と更新を行うWHO列を設定するために必要な値を戻します。ストアド・プロシージャからWHO値を取得するには、Oracle Applicationsの以前のバージョンで使用していたGET, ではなく、FND_GLOBALを使用する必要があります。

引数(入力)

変数 説明
name 取得するプロファイル・オプションの(開発者の)名前。

引数(出力)

変数 説明
value 指定されたユーザー・プロファイル・オプションの現在の値。PUTによって最後に設定された値または現行ユーザー・プロファイルのデフォルト値。

 FND_PROFILE.GET ('USER_ID', user_id);

FND_PROFILE.VALUE

要約

 function FND_PROFILE,VALUE

     (name IN varchar2) return varchar2;

場所

FNDSQFライブラリおよびデータベース(ストアド・ファンクション)

説明

VALUEは、関数の実行結果として指定されたプロファイル・オプションの値を返すことを除いて、GETとまったく同様に動作します。

引数(入力)

変数 説明
name 取得するプロファイル・オプションの(開発者の)名前。

ユーザー・プロファイルC関数

Oracle Application Object Libraryでは、C言語で記述されたコンカレント・プログラムから呼び出し可能な2つの関数が準備されています。これらの関数は、プロファイル・オプション値の格納および取得に使用されます。

afpoget

プロファイル・オプションの現行値を取得します。正常に実行された場合はTRUE、プロファイル・オプション値が見つからなかった場合はFALSEを戻します。取得したプロファイルに値が存在していなかった場合にはFALSEを戻します。このC関数を使用するには、Cコードのファイルにfdpopt.hファイルを含める必要があります(#include <fdpopt.h>)。コンカレント・プログラムでは、コンカレント要求を出したユーザーが現行ユーザーとなり、afpoget()はユーザー要求発行時ではなく要求実行時の値を読み取ります。afpoget()関数が正常に戻されると、要求したユーザー・プロファイル・オプション値にoption_valueが設定されます。afpoget()が戻す値の長さが不明の場合には、option_value[]を241文字以上で定義する必要があります。

構文

boolean afpoget(option_name, option_value)

     text   *option_name;

     text   *option_value;
変数 説明
option_name プロファイル・オプションの名前。
option_value 関数が返すプロファイル・オプションの値。

afpoput

現行セッションのプロファイル・オプション値を変更し、プロファイル・オプションを作成します。正常に実行された場合にはTRUE、WRITEフラグが「No」に設定されているプロファイル・オプションの値を変更しようとした場合や、ENABLE_CREATEフラグが設定されていないプロファイル・オプションを作成しようとした場合は、FALSEが戻されます。このCの関数を使用するには、Cコードのファイルにfdpopt.hファイルを含める必要があります(#include <fdpopt.h>)。

オプションが存在しない場合にafpoput()を実行してオプションを作成するには、ENABLE_CREATEを使用します。新たに作成したオプションは現行のコンカレント・プロセスでのみ存在し、他のプロセスでは利用できません。|(ビット単位のOR)演算子を使用すると、ENABLE_CREATEをENABLE_WRITEおよびENABLE_READに結合できます。ENABLE_WRITEまたはENABLE_READを使用して、既存のプロファイル・オプションの権限は再設定できません。afpoput()に続くコールに値の変更を許可する場合は、ENABLE_WRITEを使用します。afpoput()に続くコールに値の読取りを許可する場合は、ENABLE_READを使用します。

構文

boolean afpoput(option_name, option_value)

     text   *option_name;

     text   *option_value;
変数 説明
option_name プロファイル・オプションの名前。
option_value 現行セッションのプロファイル・オプションの変更値。すべての値はテキスト形式で保存します。値は最長で240文字までです。

「プロファイル」ウィンドウ

ユーザー・プロファイル・オプションを定義します。アプリケーションの構築時に、新たにユーザー・プロファイル・オプションを定義します。オプションを定義することによって、アプリケーションへのアクセスを異なったプロファイル・レベルで制御できます。

ユーザー・プロファイル・オプションを定義する前に、「アプリケーション」ウィンドウを使用してアプリケーションを定義します。

プロファイル・ブロック

プロファイル・オプションは、アプリケーション名とプロファイル・オプション名で識別されます。

名前

プロファイル・オプション名は、別のプロファイル・オプションと重複しないように一意にする必要があります。この名前は、Oracle Application Object Libraryのプロファイル・オプション・ルーチンを使用してプロファイル・オプションにアクセスするときに使用されます。

アプリケーション

通常は作成中のアプリケーションの名前を入力します。

ユーザー・プロファイル名

ユーザーがプロファイル・オプションを参照するときの名前です。簡潔かつ内容がわかるような名前にしてください。

説明

このプロファイル・オプションの内容または目的を適切に説明します。この説明は「ユーザー・プロファイル名」とともにウィンドウに表示され、ユーザーまたはシステム管理者が値を設定するプロファイル・オプションを選択するときに参照されます。

階層タイプ

プロファイル・オプションの階層タイプを選択します。選択できるタイプは「セキュリティ」、「サーバー」、「サーバー+職責」、「組織」のいずれかです。

階層タイプにより、システム管理者はビジネス・ニーズまたはインストール先のニーズにあわせてプロファイル・オプションのグループ化および設定ができるようになります。

デフォルトの階層タイプは「セキュリティ」です。この未更新の拡張以前に存在していたプロファイル・オプションでは、「セキュリティ」タイプが使用されます。

「サーバー」階層タイプはユーザーのセッションが実行されるサーバーを特定する必要がある場合に使用されます。たとえばプロファイル「アプリケーションWebエージェント」は「サーバー」タイプを使用して定義できます。このプロファイル・オプションの設定は、内部のサーバーと外部のサーバーで使い分けが可能です。Cookieの検証は、たとえばこのプロファイル・オプションの値に対して実行可能です。

「サーバー+職責」階層タイプでは、サーバーと職責の特定の組合せごとにプロファイル・オプションの値を管理できます。

「組織」階層タイプでは、組織は営業単位を意味します。たとえば、指定のプロファイル・オプションについて異なる組織の事務員が組織に応じて異なる値を必要とする可能性がありますが、同じ組織の事務員は同一の値を使用すると想定できます。「組織」階層タイプではシステム管理者が組織レベルでプロファイル・オプションを設定できるため、その組織内のすべてのユーザーは同じプロファイル・オプション値セットを組織レベルで1回使用します。

「セキュリティ」階層タイプを使用するプロファイルは「サイト」>「アプリケーション」>「職責」>「ユーザー」の伝統的な階層に従います。「サーバー」タイプを使用するプロファイルは「サイト」>「サーバー」>「ユーザー」の階層になります。「組織」タイプを使用するプロファイルは「サイト」>「組織」>「ユーザー」の階層になります。

階層タイプのアクセス・レベル

システム管理者がプロファイル値の定義に使用する各プロファイル・レベルについて、プロファイル・オプションの特性を定義します。

ユーザーが自分のプロファイルについて選択した階層タイプに応じて、「サイト」、「アプリケーション」、「職責」、「サーバー」、「サーバー+職責」、「組織」、「ユーザー」のレベルの特性を定義できます。

ヒント: システム管理者がすべてのプロファイル・オプションに対してサイト・レベルの値を設定できるように、作成したすべてのユーザー・プロファイル・オプションについてサイト・レベルの特性を設定する必要があります。

「サイト」レベルの各オプションへのアクセスを提供する必要があります。

アプリケーション・プロファイル・レベルで設定したプロファイル・オプション値は職責プロファイル・レベルで設定した値に上書きされ、職責プロファイル・レベルで設定した値はユーザー・プロファイル・レベルで設定した値に上書きされます。これらの3つのレベルで値を設定しておらず、サイト・レベルの値を設定している場合は、サイト・プロファイル・レベルで設定した値がデフォルト値となります。

エンド・ユーザーに、「プロファイル値」ウィンドウでのプロファイル・オプション値の更新を許可する場合、つまりユーザー・アクセス・リージョンで「更新可能」を選択した場合、「ユーザー」レベルの「可視」および「更新可能」をオンにする必要があります。

有効日 - 開始/終了

プロファイル・オプションを有効または無効にする日付を入力します。開始日のデフォルトは現在の日付です。終了日を入力しない場合、このオプションの有効期限は無期限になります。ユーザー・プロファイル・オプションを使用不可にするには、終了日に現在の日付を入力します。使用不可のプロファイル・オプションを再び有効にするには、終了日を現在の日付より後の日付に変更します。

ユーザー・アクセス

プロファイル・オプションの値リストに使用されるSQL検証

システム管理者またはユーザーがプロファイル・オプションを設定するときに、そのプロファイル・オプションで値リスト(LOV)を提供する場合、「SQL検証」フィールドで次の構文を使用する必要があります。ユーザー・プロファイル・オプションを検証するには、プロファイル・オプション値を選択し、:PROFILE_OPTION_VALUEフィールドおよび:VISIBLE_OPTION_VALUEフィールドに設定します。「プロファイル値」フォームは、これらのフィールドを使用して、ユーザーがプロファイル・オプションに有効な値を確実に入力するようにします。

構文

SQL="SQL select statement"

COLUMN="column1(length), column2(length),..."

[TITLE="{title text|*application shortname:message name}"]

[HEADING="{heading1(length), heading2(length),...

          |*application shortname:message name|N}"]

SQL

SELECT文を使用して、LOVに表示する行を選択します。SQL文では、列別名を指定して、フォーム・フィールドに値を挿入するINTO句を使用できます。さらに、データベース値を選択せずに(値にINTO NULLを選択することによって)フォーム・フィールドにデータベース値を表示し、同じINTO句の値のみを表示してフォーム・フィールドに入れる値の調整を行うことができます。

COLUMNオプションで2列以上の列を指定した場合は、LOVにはCOLUMN文で指定した順序で列が表示されます。

ヒント: 列別名は30文字を超えることはできません。長すぎる識別子はエラーの原因になります。

HEADINGオプションは、COLUMNの長さと別名を上書きします。

ここでのSQL文は、通常のSQL文と異なる点があります。まず、列別名にスペースを含める場合、列別名の前後にバックスラッシュと二重引用符を入れる必要があります。これによってLOVルーチンは、二重引用符をパラメータの終わりではなく二重引用符として認識します。たとえば、SQLオプションは次のようになります。

SQL="SELECT SALES_REPRESENTATIVE_ID,

  SALES_REPRESENTATIVE_NAME

  INTO :PROFILE_OPTION_VALUE,

  :VISIBLE_OPTION_VALUE

  FROM OE_SALES_REPRESENTATIVES

  ORDER BY SALES_REPRESENTATIVE_NAME"   

後述するHEADINGオプションで、列ヘッダーに対して別名を与えることをお薦めします。

SQL文においてGROUP BY句またはHAVING句を使用できますが、これらを使用できるのは主問合せのみで、副問合せでは使用できません。DISTINCT句およびORDER BY句は通常どおり使用できます。

MIN()、MAX()、SUM()、COUNT()などの関数は、SELECT句またはHAVING句で使用できますが、PROFILE_OPTION_VALUEフィールドまたはVISIBLE_OPTION_VALUEフィールドに設定した列では使用できません。

SQL定義において比較的複雑なWHERE句やORDER BY句は使用できますが、主問合せではUNION、INTERSECT、MINUSを使用できません。適切な値の選択にUNION、INTERSECT、MINUSが必要な場合には、表にビューを作成してそのビューから選択するか、副問合せの一部にこれらの演算子を含めることが必要です。

さらに、CONNECT BYあるいはSELECT文のWHERE句の後にくる演算子は使用できません。

また、OR句を使用する場合はカッコ内に入れてください。

SQL SELECT文の複雑な列には、カッコを使用することをお薦めします。たとえば、次のようなSQLオプションの記述が可能です。

SQL="SELECT (DEPTNO ||':' ||DEPT_NAME)

  Department, LOCATION INTO

  :DEPT.DEPTNAME, :DEPT.LOCATION

  FROM DEPARTMENT" 

COLUMN

「値リスト」ウィンドウに表示する列(または列別名)の名前、表示順、表示幅をリストします。COLUMNオプションで2列以上の列を指定した場合、値リストには記述した順序で列が表示されます。この順序は、SQL文の列と異なった順序にすることもできます。列幅は、COLUMN= "..."パラメータで指定する必要があります。ただし、後述するHEADING="..."オプションを指定した場合は、列幅の値は上書きされます。

COLUMNオプションでは、列幅を静的または動的に指定できます。静的列幅では、列名に続けて列幅を指定します。動的列幅では、列名に続けてカッコ内に数値のかわりにアスタリスクを入れて指定します。動的列幅を指定した場合、値リストはリスト内の最長値が収まるように表示列のサイズを調整します。動的列幅は、問合せを行うデータのサブセットによって変化する点に注意してください。次の例は、部門と場所に対応するCOLUMNオプションで、静的列幅および動的列幅を指定したものです。

COLUMN="Department(20), LOCATION(*)"  

列ヘッダーの表示または非表示にHEADINGオプションを使用しない場合、値リストはCOLUMNオプションの名前と幅を使用して列ヘッダーを表示します。SQL文で列別名を指定し、列が「値リスト」ウィンドウに示されるようにする場合は、その列別名をCOLUMNで使用する必要があります。列ヘッダーは、ここで定義したとおりに大文字と小文字で「値リスト」ウィンドウに表示されます。列別名に単語が2つ含まれている場合は、別名の両側にバックスラッシュと二重引用符を入れる必要があります。列別名は30文字を超えることはできません。最初のSQLオプションの例を使用すると、COLUMNオプションは次のようになります。

COLUMN="\"Sales Representative\"(30)"   

表示幅が列名や列別名よりも小さい場合、「値リスト」ウィンドウのヘッダーを非表示にしても(HEADINGオプションを参照)、値リストには列名または列別名の長さが適用されます。値を正しく表示するには、列幅を数値で指定する必要があります。

TITLE

「値リスト」ウィンドウの最上行の中央にハイライト表示するテキストです。デフォルトの場合、タイトルは表示されません。アプリケーション短縮名とメッセージ名を付けることによって、LOVの定義にメッセージ・ディクショナリのトークンを指定できます。「*」で始まるタイトルはメッセージ・ディクショナリ名とみなされ、メッセージの内容はタイトルとなります。次に例を示します。

TITLE="*FND:MY_MESG_NAME"

HEADING

列ヘッダーと列幅のリストを、スペースまたはカンマで区切って指定できます。COLUMN="..."パラメータの各列について1個ずつ、HEADING="..."パラメータでヘッダーを指定する必要があります。列幅は列名に続くカッコ内に数字で指定するか、カッコ内にアスタリスクを記述して動的な列幅を設定できます。

HEADING ="..."パラメータで指定した列幅は、COLUMN="..."パラメータで指定した列幅を上書きします。HEADINGオプションとCOLUMNオプションを一緒に使用する場合は、COLUMNオプションに「*」(動的列幅)を設定することをお薦めします。

HEADING="N"と設定することにより、「値リスト」ウィンドウのすべてのヘッダーを非表示にできます。

アプリケーション短縮名とメッセージ名を付けることによって、値リストの定義にメッセージ・ディクショナリのトークンを指定できます。「*」で始まるヘッダーはメッセージ・ディクショナリ名とみなされ、メッセージの内容がヘッダーに代入されます。次に例を示します。

HEADING="*FND:MY_MESG_NAME(*)"  

SQL検証でTITLEおよびHEADINGを明示的に指定しない場合、プロファイルはTITLE="user_profile_option_name"およびHEADING="N"となり実行時に定義に追加されます。追加されたタイトルは、SQL文のCOLUMNトークンや別名で定義されたヘッダーを上書きします。

たとえば、SECURITY_LEVELという名前のオプションで1と2のコードを使用してそれぞれ高い値と低い値を示す場合を考えます。コード列を選択してPROFILE_OPTION_VALUEへ設定し、意味の列を選択してVISIBLE_OPTION_VALUEへ設定します。コードの意味を変更する場合は、プログラムやフォームのロジックを修正する必要はありません。プロファイル・オプションがユーザー定義の場合、両方のフィールドに値を選択できます。たとえば、機材の情報を保持する表とフォームがあってEQUIPMENTというプロファイル・オプションがある場合、同じ値を選択してPROFILE_OPTION_VALUEとVISIBLE_OPTION_VALUEの両方に設定できます。

新規のプロファイル・オプションSET_OF_BOOKS_NAMEを定義する例を次に示します。

SQL="SELECT SET_OF_BOOKS_NAME, SET_OF_BOOKS_NAME \"Set of Books\" '

INTO :PROFILE_OPTION_VALUE, :VISIBLE_OPTION_VALUE,

FROM SETS_OF_BOOKS"

COLUMN="\"Set of Books\"(30)"   

このフィールドに検証基準を入力しない場合、ユーザーまたはシステム管理者は、更新が許可されていればプロファイル・オプションに任意の値を設定できます。

Oracle Application Object Libraryが検証を正しく実行できない場合、ユーザーがプロファイル・オプションを問い合せてもプロファイル・オプションは表示されません。プロファイル・オプションの「ユーティリティ: 診断」がNoに設定されている場合はエラー・メッセージも表示されません。たとえば、ユーザーが検証文で参照している表にアクセスできない場合、Oracle Application Object Libraryはユーザーが「プロファイル値」ウィンドウでプロファイル・オプションを問い合せたときにプロファイル・オプションを表示しません。「ユーティリティ: 診断」がNoに設定されている場合はエラー・メッセージも表示されません。