Аргументы значения шаблона

Некоторые аргументы в функциях каталога, например аргумент TableName в SQLTables, принимают шаблоны поиска. Эти аргументы принимают шаблоны поиска, если атрибут инструкции SQL_ATTR_METADATA_ID имеет значение SQL_FALSE; они являются аргументами идентификатора, которые не принимают шаблон поиска, если этот атрибут имеет значение SQL_TRUE.

Символы шаблона поиска:

  • Символ подчеркивания (_), представляющий любой один символ.

  • Знак процента (%) представляет любую последовательность нулевых или более символов.

  • Escape-символ, который относится к драйверу и используется для включения символов подчеркивания, процентов и escape-символа в качестве литерала. Если экранный символ предшествует не специальному символу, экранный символ не имеет особого значения. Если escape-символ предшествует специальному символу, он экранирует специальный символ. Например, "\a" будет рассматриваться как два символа, "\" и "a", но "\%" будет рассматриваться как не специальный одинарный символ "%".

Экранный символ извлекается с параметром SQL_SEARCH_PATTERN_ESCAPE в SQLGetInfo. Он должен предшествовать любому символу подчеркивания, знака процента или escape-символа в аргументе, который принимает шаблоны поиска для включения этого символа в качестве литерала. Примеры показаны в следующей таблице.

Шаблон поиска Description
%A% Все идентификаторы, содержащие букву A
ABC_ Все четыре идентификатора символов, начиная с ABC
ABC\_ Идентификатор ABC_, предполагая, что escape-символ является обратной косой чертой (\)
\\% Все идентификаторы, начиная с обратной косой черты (\), предполагая, что escape-символ является обратной косой чертой

Необходимо учитывать, чтобы избежать символов шаблона поиска в аргументах, которые принимают шаблоны поиска. Это особенно верно для символа подчеркивания, который обычно используется в идентификаторах. Распространенная ошибка в приложениях заключается в том, чтобы получить значение из одной функции каталога и передать это значение в аргумент шаблона поиска в другой функции каталога. Например, предположим, что приложение извлекает имя таблицы MY_TABLE из результирующего набора для SQLTables и передает это в SQLColumns, чтобы получить список столбцов в MY_TABLE. Вместо получения столбцов для MY_TABLE приложение получит столбцы для всех таблиц, соответствующих шаблону поиска MY_TABLE, например MY_TABLE, MY1TABLE, MY2TABLE и т. д.

Примечание.

ODBC 2.Драйверы x не поддерживают шаблоны поиска в аргументе CatalogName в SQLTables. Драйверы ODBC 3*.x* принимают шаблоны поиска в этом аргументе, если атрибут среды SQL_ATTR_ ODBC_VERSION имеет значение SQL_OV_ODBC3; Они не принимают шаблоны поиска в этом аргументе, если задано значение SQL_OV_ODBC2.

Передача указателя NULL в аргумент шаблона поиска не ограничивает поиск этого аргумента; То есть значение NULL и шаблон поиска % (любые символы) эквивалентны. Однако шаблон поиска нулевой длины ( то есть допустимый указатель на строку нулевой длины — соответствует только пустой строке ("").