Séquences d’échappement dans ODBC

Un certain nombre de fonctionnalités de langage, telles que les jointures externes et les appels de fonction scalaire, sont généralement implémentées par des SGBD. Toutefois, les syntaxes de ces fonctionnalités ont tendance à être spécifiques au SGBD, même lorsque les syntaxes standard sont définies par les différents organismes de normes. Pour cette raison, ODBC définit des séquences d’échappement qui contiennent des syntaxes standard pour les fonctionnalités de langage suivantes :

  • Littéraux de date, d’heure, d’horodateur et d’intervalle DateHeure

  • Fonctions scalaires telles que les fonctions de conversion numérique, de chaîne et de type de données

  • Caractère d’échappement du prédicat LIKE

  • Jointures externes

  • Appels de procédure

La séquence d’échappement utilisée par ODBC est la suivante :

  
(extension)  
  

Notes

La séquence d’échappement est reconnue et analysée par les pilotes, qui remplacent les séquences d’échappement par une grammaire spécifique au SGBD. Pour plus d’informations sur la syntaxe des séquences d’échappement, consultez la section Séquence d’échappement ODBC dans l’annexe C : Grammaire SQL.

Remarque

Dans ODBC 2.x, la syntaxe standard de la séquence d’échappement était la suivante : --(*vendor(vendor-name), product(product-name)extension *)--

En plus de cette syntaxe, une syntaxe abrégée a été définie sous la forme : {extension}

Dans ODBC 3.x, la forme longue de la séquence d’échappement a été déconseillée, et la forme abrégée est utilisée exclusivement.

Étant donné que les séquences d’échappement sont mappées par le pilote à des syntaxes spécifiques au SGBD, une application peut utiliser la séquence d’échappement ou la syntaxe spécifique au SGBD. Toutefois, les applications qui utilisent la syntaxe spécifique au SGBD ne sont pas interopérables. Lorsque vous utilisez la séquence d’échappement, les applications doivent s’assurer que l’attribut d’instruction SQL_ATTR_NOSCAN est désactivé, ce qui est le cas par défaut. Sinon, la séquence d’échappement est envoyée directement à la source de données, où elle provoque généralement une erreur de syntaxe.

Les pilotes prennent uniquement en charge ces séquences d’échappement qu’ils peuvent mapper aux fonctionnalités de langage sous-jacentes. Par exemple, si la source de données ne prend pas en charge les jointures externes, le pilote ne le fera pas non plus. Pour déterminer les séquences d’échappement prises en charge, une application appelle SQLGetTypeInfo et SQLGetInfo. Pour plus d’informations, consultez la section suivante, Littéraux de date, heure et d’horodateur.

Cette section contient les rubriques suivantes :