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

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

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

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

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

構文:

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

パラメーター:

statementPrefix
[NOPLAN]
SQLStatement は、SQL(DBRMLIB) が指定されている場合でも DBRM に記述されず、代わりにランタイムで文を動的 SQL として扱います。他のプレフィックスと使用する場合、最初に [NOPLAN] を指定する必要があります。
[MAINFRAME]
SQLStatement は、HCOSS によって変換および修飾されます。
[NODIALECT]
SQLStatement は、HCOSS によって変換も修飾もされません。
SQLStatement
あらゆる DB2 文、または DB2 互換の SQL Server 文。

依存性:

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

例:

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

例 1

QUALIFIER コンパイラ指令オプションは設定されておらず、指定済みの QUALIFIER パラメーターはありません。

EXEC SQL [NOPLAN] SQLStatement END-EXEC

SQLStatement は変換されますが、HCOSS によって修飾されません。DBRM に書き込まれず、BIND コンパイラ指令オプションが設定されていてもバインド スクリプト ファイルに書き込まれません。また ACCESS コンパイラ指令オプションが設定されていてもコンパイル時にストアド プロシージャを作成するために使用されません。

例 2

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

EXEC SQL [MAINFRAME] SQLStatement END-EXEC

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

例 3

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

EXEC SQL [NOPLAN][MAINFRAME] SQLStatement END-EXEC

SQLStatement は HCOSS によって変換および修飾されますが、DBRM に書き込まれません。

例 4

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

EXEC SQL [NODIALECT] SQLStatement END-EXEC

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

例 5

BIND または DBRMLIB コンパイラ指令が QUALIFIER コンパイラ指令とともに設定されます。

EXEC SQL [NOPLAN][NODIALECT] SQLStatement END-EXEC

SQLStatement は HCOSS によって変換も修飾もされず、バインド ファイルまたは DBRM に書き込まれません。