Escapesequenzen in ODBC

Eine Reihe von Sprachfeatures, z. B. äußere Verknüpfungen und Skalarfunktionsaufrufe, werden häufig von DBMSs implementiert. Die Syntaxen für diese Merkmale sind jedoch in der Regel DBMS-spezifisch, selbst wenn die verschiedenen Normungsgremien Standardsyntaxen definiert haben. Aus diesem Grund definiert ODBC Escapesequenzen, die Standardsyntaxen für die folgenden Sprachfeatures enthalten:

  • Datums-, Uhrzeit-, Zeitstempel- und Datetime-Intervallliterale

  • Skalarfunktionen wie numerische, Zeichenketten- und Datentypkonvertierungsfunktionen

  • Escapezeichen des LIKE-Prädikats

  • Äußere Joins

  • Prozeduraufrufe

Die von ODBC verwendete Escapesequenz lautet wie folgt:

  
(extension)  
  

Hinweise

Die Escapesequenz wird von Treibern erkannt und geparst, die die Escapesequenzen durch DBMS-spezifische Grammatik ersetzen. Weitere Informationen zur Escapesequenzsyntax finden Sie unter ODBC-Escapesequenzen in Anhang C: SQL-Grammatik.

Hinweis

In ODBC 2.x, dies war die Standardsyntax der Escapesequenz: --(*vendor(vendor-name), product(product-name)extension *)--

Zusätzlich zu dieser Syntax wurde eine Kurzhandsyntax des Formulars definiert: {extension}

In ODBC 3.x ist die Langform der Escapesequenz veraltet und es wird ausschließlich die Kurzform verwendet.

Da die Escapesequenzen vom Treiber auf DBMS-spezifische Syntaxen abgebildet werden, kann eine Anwendung entweder die Escapesequenz oder die DBMS-spezifische Syntax verwenden. Anwendungen, die die DBMS-spezifische Syntax verwenden, sind jedoch nicht interoperabel. Bei Verwendung der Escapesequenz sollten Anwendungen sicherstellen, dass das Attribut der SQL_ATTR_NOSCAN-Anweisung deaktiviert ist, was standardmäßig der Fall ist. Andernfalls wird die Escapesequenz direkt an die Datenquelle gesendet, wo sie in der Regel einen Syntaxfehler verursacht.

Treiber unterstützen nur die Escapesequenzen, die sie zugrunde liegenden Sprachfeatures zuordnen können. Wenn die Datenquelle z. B. keine äußeren Verknüpfungen unterstützt, wird der Treiber nicht unterstützt. Um zu ermitteln, welche Escapesequenzen unterstützt werden, ruft eine Anwendung SQLGetTypeInfo und SQLGetInfo auf. Weitere Informationen finden Sie im nächsten Abschnitt, Datums-, Uhrzeit- und Zeitstempelliteralen.

In diesem Abschnitt werden die folgenden Themen behandelt: