機械翻訳について

4.5 Oracle DatabaseのSQL構文の処理

Oracle Database Gateway製品の最も重要な機能の1つは、ユーザーやアプリケーション・プログラマにSQLの透過性を提供することです。

外部のSQL構文は、次の4つの形式に分類されます。

4.5.1 互換型SQL関数

Oracleデータベースは、互換性のあるSQL関数をDRDAデータベースに自動的に転送します。この場合、同じ構文と意味を持つSQL構成は、OracleデータベースとDRDAデータベースの両方に存在します。

これらのSQL構文は、変更されずに転送されます。 互換性のあるすべての関数は、列関数です。 互換性のない関数は、等価のDRDA SQL関数に変換されるか、DRDAデータベースからデータが戻された後にOracle Databaseにより補正(後処理)されます。

4.5.2 変換型SQL関数

変換型関数は、Oracle DatabaseとDRDAデータベース間で意味は同じですが異なる名前を持つ関数です。 ただし、すべてのアプリケーションでは、Oracleの関数名を使用する必要があります。

DRDAデータベースにより異なる構文(異なる関数名)でサポートされるSQL構文は、Oracle Databaseによって自動的に変換され、DRDAデータベースに転送されます。 Oracle Databaseは、DRDAデータベースに関数名を送信する前に、アプリケーションに対して透過的な方法でその関数名を変更します。

4.5.3 補正型SQL関数

Oracleデータベースでサポートされる一部の高度なSQL構成は、DRDAデータベースで同じ方法でサポートされない場合があります。

補正関数は、DRDAサーバーによって認識されない、またはDRDAサーバーによって認識されるが、DRDAサーバーとOracleデータベースを比較する場合、関数のセマンティクスの解釈が異なるSQL関数です。 これらの関数のいずれかを含むSELECT文がOracleデータベースからゲートウェイに渡される場合、ゲートウェイはSQL文をDRDAサーバーに渡す前に関数を削除します。 ゲートウェイは、選択されたDRDAデータベースの行をOracle Databaseに渡します。 Oracle Databaseは、その関数を適用します。

4.5.3.1 後処理

Oracle Databaseでは、DRDAデータベースに転送されたSQLリクエストから互換性のないSQL構文を自動的に除外することで、存在しない関数や互換性のない関数を補正できます。

Oracle Databaseは、DRDAデータベースから必要なデータを取得し、関数を適用します。 このプロセスは、後処理と呼ばれます。

ゲートウェイでは、すべてのSQL関数をDRDAデータベースに渡そうとします。 ただし、計算に出現する関数がDRDAデータベースでサポートされない場合、ゲートウェイではその関数を変更します。 たとえば、プログラムがz/OSデータベースのDB2 UDBに対して次の問合せを実行する場合:

SELECT COS(X_COOR) FROM TABLE_X;

データベースはCOS関数の多くをサポートしていないため、ゲートウェイは問合せを次のように変更します:

SELECT X_COOR FROM TABLE_X;

TABLE_X X_COOR 列のすべてのデータは、z/OSデータベースのDB2 UDBからOracleデータベースに渡されます。 データがOracleデータベースに移動されると、COS関数が実行されます。

DRDAデータベースに格納された大量のデータに対して操作を実行する場合、一部の関数では後処理が必要になることに注意してください。

4.5.4 ネイティブ・セマンティクスSQL関数

通常補正される一部のSQL関数は、ネイティブ・セマンティクス機能を通じて上書きすることも可能です。

SQL関数がネイティブ・セマンティクスに対して有効になっている場合、関数は、補償されるのではなく、処理のためにDRDAデータベースに渡すことができます。 その後、SQL関数はDRDAデータベースでネイティブに処理されます。 詳細は、「ネイティブ・セマンティクス」を参照してください。