DIALECT

OpenESQL プリプロセッサで HCOSS の SQL 方言互換機能を有効にして、関数、特殊レジスタ、データ タイプの自動マッピングなど、HCOSS のすべての自動変換をオンにし、DIALECT 文のプレフィックスを使用できるようにします。 SQL Server と互換性のない DB2 SQL 文の大半を同等の T-SQL 文に変換します。

構文:

DIALECT={MAINFRAME | MIXED | NONE} [overrides]

パラメーター:

MAINFRAME
  • DB2 と互換性があるすべての文は、HCOSS によって変換されます。
  • DB2 互換の文の修飾されていないテーブルとビューの仕様は、BIND PACKAGE および BIND PLAN コマンドの SQL(QUALIFIER) 指令オプションまたは QUALIFIER パラメーターによって修飾されます。
  • [NOPLAN]、[NODIALECT]、[MAINFRAME] 文プレフィックスをサポートします。
  • [NODIALECT] 文プレフィックスと使用する場合、変換と修飾は無効になります。
MIXED
  • DB2 構文の変換またはテーブルとビューの修飾を実行しません。
  • 修飾は、個別の文で [MAINFRAME] 文プレフィックスを使用して有効にできます。
NONE
  • DIALECT を指定しないことを意味します。
  • DB2 構文の変換またはテーブルとビューの修飾を実行しません。
  • [NOPLAN] 文プレフィックスのみをサポートします。
overrides
SQL コンパイラ指令で、DIALECT により設定されるデフォルト値以外の値に設定され、それぞれがスペースで区切られます。編集済み SQL コンパイラ指令を指定すると、DIALECT によってデフォルトで設定された指令をオーバーライドします。

プロパティ:

デフォルト: DIALECT=NONE

依存性:

DBMAN を ODBC または ADO に設定する必要があります。

MAINFRAME に設定すると、DIALECT は次の SQL コンパイラ指令オプションを設定します。

  • CHECK
  • CHECKCALLPARAMS
  • CHECKSINGLETON
  • CHECKUPDCURSOR
  • DATE=ISO
  • DESCRIBEDTCHAR
  • DESCRIBEVARCHAR49
  • DETECTDATE=CLIENT
  • MARS
  • STRICTPARSE
  • TIME=ISO
MIXED に設定すると、DIALECT は次の SQL コンパイラ指令オプションを設定します。
  • CHECK
  • CHECKSINGLETON
  • CHECKUPDCURSOR
  • DATE=ISO
  • DESCRIBEDTCHAR
  • DESCRIBEVARCHAR49
  • DETECTDATE=CLIENT
  • MARS
  • TIME=ISO
MAINFRAM または MIXED に設定した場合、DIALECT は OpenESQL プリプロセッサを設定して次の EXEC SQL 文をスキップし、代わりにコンパイル時に警告を生成します。
  • SET CURRENT APPLICATION ENCODING SCHEME
  • SET CURRENT DEGREE
  • SET CURRENT [LOCALE] LC_CTYPE
  • SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
  • SET CURRENT OPTIMIZATION HINT
  • SET CURRENT PRECISION
  • SET CURRENT REFRESH AGE
  • SET CURRENT RULES
  • SET CURRENT ENCRYPTION PASSWORD

範囲:

コンパイル時の使用: あり
実行時の動作: ソース ファイル

詳細については、「範囲 - HCOSS SQL コンパイラ指令オプション」を参照してください。

メリット:

  • DB2 文を T-SQL に変換する必要はありません。
  • プログラムのバインド時にデフォルトのスキーマを変更できるか、または場合により、QUALIFIER SQL コンパイラ指令オプションを使用してコンパイル時にデフォルトのスキーマを変更できます。

説明:

DIALECT=MAINFRAME と DIALECT=MIXED の両方が、[NODIALECT] と [MAINFRAME] 文プレフィックスを両方とも受け入れます。これらを適切な組み合わせで使用することにより、1 つのアプリケーションの文レベルで 2 つの DIALECT 設定を効果的に切り替えることができます。ただし、[NODIALECT] と [MAINFRAME] プレフィックスを DIALECT=NONE でコンパイルするコードから削除する必要があります。

CHECK 指令をオーバーライドするには、NOCHECK を指定するか、またはデータベース接続を特定するように DB 指令を設定します。指定した接続で Windows 認証を使用しない場合、PASS 指令を設定して接続用の有効なユーザー ID とパスワードを指定する必要があります。

HCOSS のコンテキストでは、CHECK は次を検証します。
  • HCOSS により変換された SQL 構文。変換された構文に SQL Server との互換性があるかどうかを判定します。これにより、HCOSS によって解決されなかった DB2 と SQL Server との非互換性を早い段階で検出できます。
  • 変換されたデータベース オブジェクト名 (テーブル、ビュー、列、関数) が SQL Server で有効かどうかを判定します。

変換した SQL 文をコンパイル時に SQL Server を使用して完全にチェックできるようにするには、DB、PASS、QUALIFIER の各指令を DIALECT=MAINFRAME または DIALECT=MIXED とともに設定します。

DIALECT=MAINFRAME の場合、アプリケーションの文の許容範囲を超える行がデータベースから返されると、HCOSS は次の結果を返します。
SQLCODE = -811 SQLSTATE = 21000 SQLWARN4 = W 

例:

SQL(DIALECT=MAINFRAME NOCHECK NODETECTDATE)