ODBC でのエスケープ シーケンス

外部結合やスカラー関数呼び出しなど、多数の言語機能が DBMS によって一般的に実装されています。 ただし、さまざまな標準化団体によって標準構文が定義されている場合でも、これらの機能の構文が DBMS ごとに異なる傾向があります。 このため、ODBC は、次の言語機能の標準構文を含むエスケープ シーケンスを定義しています。

  • 日付、時刻、タイムスタンプ、および datetime 間隔リテラル

  • 数値、文字列、データ型変換関数などのスカラー関数

  • LIKE 述語のエスケープ文字

  • 外部結合

  • プロシージャ呼び出し

ODBC で使用されるエスケープ シーケンスは次のとおりです。

  
(extension)  
  

解説

エスケープ シーケンスはドライバーによって認識および解析されて、DBMS 固有の文法に置き換えられます。 エスケープ シーケンス構文の詳細については、「付録 C: SQL 文法」の「ODBC エスケープ シーケンス」を参照してください。

Note

In ODBC 2.xの場合、エスケープ シーケンスの標準構文は次のようになっていました。--(*vendor(vendor-name), product(product-name)extension *)--

この構文に加えて、短縮形の構文である {extension} という形式も定義されていました。

ODBC 3.x では、エスケープ シーケンスの長い形式は非推奨となり、短縮形は限定的に使用されます。

エスケープ シーケンスはドライバーによって DBMS 固有の構文にマッピングされるため、アプリケーションはエスケープ シーケンスか DBMS 固有の構文のいずれか一方を使用できます。 ただし、DBMS 固有の構文を使用するアプリケーションは相互運用できません。 エスケープ シーケンスを使用する場合、アプリケーションでは、SQL_ATTR_NOSCAN ステートメント属性が無効になっていることを確認する必要があります。この属性は既定では無効になっています。 そうなっていない場合、エスケープ シーケンスはデータ ソースに直接送信され、通常は構文エラーが発生します。

ドライバーは、基になる言語機能にマッピング可能なエスケープ シーケンスのみをサポートします。 たとえば、データ ソースが外部結合をサポートしていない場合、ドライバーもサポートしません。 サポートされているエスケープ シーケンスを判断するために、アプリケーションは SQLGetTypeInfoSQLGetInfo を呼び出します。 詳細については、次のセクション「日付、時刻、およびタイムスタンプのリテラル」を参照してください。

このセクションでは、次のトピックを扱います。