ビュー・オブジェクト・ウィザード - 問合せページ

データソースのビュー・オブジェクトの問合せを調整するには、問合せページを使用します。

問合せページには、2つの動作モードがあります。

警告: エキスパート・モードで変更を行うと、エキスパート・モードを終了したときに変更作業が失われる可能性があります。

生成されたSQL文、問合せ文
標準モードでは、「生成されたSQL文」フィールドは編集できません。属性ページで選択した属性のリストに基づいて発行されるSELECT文を表示するだけです。
エキスパート・モードでは、「問合せ文」フィールドに有効なSQL文を入力できます。
条件
標準モードの場合、WHEREキーワードを使用せずに WHERE句を入力します。たとえば、部門番号が20に等しい制約を適用するには、次のように入力します。
DEPARTMENT_ID = 20
ORDER BY
ORDER BYキーワードを使用せずにORDER BY句を入力します。たとえば、部門番号で問合せ出力を並べ替えるには、「ORDER BY」フィールドに直接DEPARTMENT_IDと入力します。「編集」をクリックして、ORDER BY句に使用できる属性を選択して並べ替えることもできます。
エキスパート・モードでは、「問合せ文」フィールドに直接ORDER BY句を追加できますが、句のORDER BY部分は別に保持する方が便利です。これは、ランタイム・エンジンによって問合せに別のWHERE句を追加する必要があるためです。ORDER BY句を別に保持することで、正しく適用されるようになります。
エキスパート・モード
SQL問合せを直接編集するには、「エキスパート・モード」を選択します。エキスパート・モードを使用すると、問合せ文全体を制御して、直接編集できます。エキスパート・モードでは、WHERE文とORDER BY文以外に、有効なすべてのSQL文を入力できます。
読取り専用のビュー・オブジェクトは、常にエキスパート・モードで使用します。エキスパート・モードで変更を行うと、エキスパート・モードを終了したときに変更作業が失われる可能性があります。
バインディング・スタイル
パラメータをビュー・オブジェクトに渡すために使用する3つのスタイルを決定する場合に、選択または選択を解除します。
Oracleポジショナル
次のコード例に示すように、このスタイルでは、パラメータをコロンとそれに続く数値として表します。
WHERE bar = :1 AND foo = :2
このスタイルでは、数値は読みやすくするためにのみ使用されます。パラメータは、数値が出現する順序でビュー・オブジェクトに渡されます。たとえば、前述のコード例は、次の意味になります。
WHERE bar = :70 AND foo = :3
 
Oracle付き
次のコード例に示すように、このスタイルでは、パラメータをコロンとそれに続く識別子として表します。
WHERE bar = :barparam AND foo = :fooparam
ポジショナル・スタイルと異なり、パラメータの名前は、アプリケーションがパラメータ値を入力するときに実際に使用される名前です。
 
JDBCポジショナル
次のコード例に示すように、このスタイルは、パラメータを疑問符として表します。
WHERE foo = ? AND bar = ?

Oracleデータベースを稼働させている場合、データベースによってより効率的に処理されるOracleスタイルのパラメータを使用することをお薦めします。Oracle以外のデータベースを稼働させている場合は、JDBCポジショナル・スタイル・パラメータを使用する必要があります。
注意: ビュー・リンクでは、リンク先ビュー・オブジェクトで指定されたパラメータ・スタイルを使用します。このスタイルが設定され、ビュー・リンクが作成されると、スタイルを変更するには、編集ウィザードを使用して各ビュー・リンクにアクセスし、SQL構文を修正する必要があります。
クエリー・ビルダー
JDeveloperのSQL Query Builderを使用して、ビュー・オブジェクトの問合せを作成する場合にクリックします。
実行計画
ビュー・オブジェクトまたはビュー・リンクのSQLについてOracleオプティマイザで選択された実行計画を表示する場合にクリックします。実行計画は、SQLの実行に必要な一連の操作です。
テスト
「テスト」は、SQL問合せの構文が有効であるかどうかをテストする場合にクリックします。その他のチェックは実行されません。構文が有効である場合、コードが有効であることを示すメッセージが戻されます。構文が有効でない場合、エラー・メッセージが戻されます。

関連項目
Oracle ADFビュー・オブジェクトについて