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


Аргументы идентификатора

Если строка в аргументе идентификатора заключена в кавычки, драйвер удаляет начальные и конечные пробелы и обрабатывает строку в кавычках буквально. Если строка не заключена в кавычки, драйвер удаляет конечные пробелы и сворачивает строку в верхний регистр. Установка аргумента идентификатора на null указатель возвращает SQL_ERROR и SQLSTATE HY009 (недопустимое использование null указателя), если аргумент не является именем каталога и каталоги не поддерживаются.

Эти аргументы рассматриваются как аргументы идентификатора, если атрибут инструкции SQL_ATTR_METADATA_ID имеет значение SQL_TRUE. В этом случае знак подчеркивания (_) и знак процента (%) будут рассматриваться как фактический символ, а не как символ шаблона поиска. Эти аргументы рассматриваются как обычный аргумент или аргумент шаблона в зависимости от аргумента, если этот атрибут имеет значение SQL_FALSE.

Хотя идентификаторы, содержащие специальные символы, должны быть заключены в кавычки в инструкциях SQL, они не должны заключаться в кавычки при передаче в качестве аргументов функций каталога, так как кавычки, переданные в функции каталога, интерпретируются буквально. Например, предположим, что символ кавычки идентификатора (который специфичен для драйвера и возвращается с помощью SQLGetInfo) является двойной кавычкой ("). Первый вызов SQLTables возвращает результирующий набор, содержащий сведения о таблице "Кредиторская задолженность", в то время как второй вызов возвращает сведения о таблице "Кредиторская задолженность", что, вероятно, не соответствует ожиданиям.

SQLTables(hstmt1, NULL, 0, NULL, 0, "Accounts Payable", SQL_NTS, NULL, 0);  
SQLTables(hstmt2, NULL, 0, NULL, 0, "\"Accounts Payable\"", SQL_NTS, NULL, 0);  

Идентификаторы в кавычках используются для отличия имени истинного столбца от псевдоколонки с тем же именем, например, ROWID в Oracle. Если параметр ROWID передается в аргументе функции каталога, функция будет работать с псевдоколонкой ROWID, если она существует. Если псевдостолбец не существует, функция будет работать со столбцом ROWID. Если ROWID передается в аргументе функции каталога, функция будет работать со столбцом ROWID.

Дополнительные сведения об идентификаторах, заключённых в кавычки, см. в разделе «Идентификаторы в кавычках».