DIALECT 指令の SQL 文プレフィックス

DIALECT 文のプレフィックスにより、DB2 から PostgreSQL への変換の詳細を、DB2 構文に準拠する PostgreSQL 文など個別の EXEC SQL 文に対して指定できます。これにより、修飾されていないテーブルやビューの修飾など、特定のオーバーライドおよび変換ルーチンを必要に応じて DB2 に互換性のある PostgreSQL 文に適用できます。

時間が経つにつれ、移行したアプリケーションは DB2 でなく PostgreSQL に特有の構文を使用するように変化します。DIALECT 指令を MAINFRAME に設定し、TARGETDB 指令を POSTGRESQL、SGSQLAWS、または PGSQL のいずれかに設定してアプリケーションをコンパイルする場合、デフォルトでは HCOPG はすべての文が DB2 文であることを前提にして、定義済みの HCOPG データ型マッピング、SQL 名マッピング、SQLCODE マッピングによってもたらされる仕様を使用してそれらの文を PostgreSQL 文に変換します。また HCOPG は、SQL(QUALIFIER) コンパイラ指令オプションを使用することで、修飾されていないテーブルおよびビューに修飾子を適用します。さらに HCOPG はデフォルトで既存の PostgreSQL 文を変換せず、それらを PostgreSQL データベースに直接サブミットします。

DIALECT=MIXED を使用してコンパイルする際に、上記の変換は [MAINFRAME] プレフィックスをともなう文に対してのみ実行され、HCOPG はデフォルトですべての文が PostgreSQL 文であることを前提にします。

DIALECT=MAINFRAME と DIALECT=MIXED のどちらを選択するかは、大半の文を DB2 文または PostgreSQL 文のどちらとして処理する必要があるかによります。

構文:

文プレフィックスは、次のように直接 EXEC SQL 文にコーディングされます。
EXEC SQL [statementPrefix]... SQLStatement END-EXEC

パラメーター:

statementPrefix
[MAINFRAME]
SQLStatement は、HCOPG によって変換および修飾されます。
[NODIALECT]
SQLStatement は、HCOPG によって変換も修飾もされません。
SQLStatement
あらゆる DB2 文、または DB2 互換の PostgreSQL 文。

依存関係:

文プレフィックスは DIALECT コンパイラ指令オプションとともに使用する必要があります。

例:

次の例はいずれも、DIALECT が MAINFRAME または MIXED に設定され、すべての SQLStatement が DB2 互換であることを前提にします。

例 1

QUALIFIER コンパイラ指令オプションが設定されています。

EXEC SQL [MAINFRAME] SQLStatement END-EXEC

SQLStatement は、HCOPG によって変換および修飾されます。

例 2

QUALIFIER コンパイラ指令オプションが設定されています。

EXEC SQL [NODIALECT] SQLStatement END-EXEC

SQLStatement は、HCOPG によって変換も修飾もされません。