Поделиться через


Escape-последовательности в ODBC

Ряд функций языка, таких как внешние соединения и скалярные вызовы функций, обычно реализуются DBMS. Однако синтаксисы этих функций, как правило, зависят от СУБД, даже если стандартные синтаксисы определяются различными органами стандартов. Из-за этого ODBC определяет escape-последовательности, содержащие стандартные синтаксисы для следующих функций языка:

  • Литералы даты, времени, метки времени и интервала даты и времени

  • Скалярные функции, такие как числовые, строковые и функции преобразования типов данных

  • Escape-символ предиката LIKE

  • Внешние соединения

  • Вызовы процедур

Escape-последовательность, используемая ODBC, выглядит следующим образом:

  
(extension)  
  

Замечания

Escape-последовательность распознается и анализируется драйверами, которые заменяют escape-последовательности грамматикой для субД. Дополнительные сведения о синтаксисе escape-последовательности см. в разделе "Escape-последовательности ODBC" в приложении C: грамматика SQL.

Примечание.

В ODBC 2.x, это был стандартный синтаксис escape-последовательности: --(*vendor(vendor-name), product(product-name)*)--

Помимо этого синтаксиса, был определен сокращенный синтаксис формы: {extension}

В ODBC 3.x, длинная форма escape-последовательности устарела, а сокращенная форма используется исключительно.

Так как escape-последовательности сопоставляются драйвером с синтаксисами, зависящими от СУБД, приложение может использовать синтаксический синтаксис для escape-последовательности или СУБД. Однако приложения, использующие синтаксис СУБД, не будут взаимодействовать. При использовании escape-последовательности приложения должны убедиться, что атрибут инструкции SQL_ATTR_NOSCAN отключен по умолчанию. В противном случае escape-последовательность будет отправлена непосредственно в источник данных, где обычно возникает синтаксическая ошибка.

Драйверы поддерживают только те escape-последовательности, которые они могут сопоставить с базовыми языковыми функциями. Например, если источник данных не поддерживает внешние соединения, ни драйвер. Чтобы определить, какие escape-последовательности поддерживаются, приложение вызывает SQLGetTypeInfo и SQLGetInfo. Дополнительные сведения см. в следующем разделе: "Литералы даты", "Время" и "Метка времени".

Этот раздел содержит следующие подразделы.