Изменения в поведении
Изменения поведения — это изменения, для которых синтаксис интерфейса остается неизменным, но семантика изменилась. Для этих изменений функциональные возможности, используемые в ODBC 2.X ведет себя по-разному, чем те же функции в ODBC 3.x.
Показывает ли приложение ODBC 2.поведение x или ODBC 3.Поведение x определяется атрибутом среды SQL_ATTR_ODBC_VERSION. Это 32-разрядное значение имеет значение SQL_OV_ODBC2 для выставления ODBC 2.поведение x и SQL_OV_ODBC3 для выставления ODBC 3.поведение x .
Атрибут среды SQL_ATTR_ODBC_VERSION задается вызовом SQLSetEnvAttr. Когда приложение вызывает SQLAllocHandle для выделения дескриптора среды, он должен немедленно вызыватьSQLSetEnvAttr , чтобы задать поведение, которое он демонстрирует. (В результате существует новое состояние среды для описания дескриптора среды в выделенном, но бессерверном состоянии.) Дополнительные сведения см . в приложении B: таблицы перехода состояния ODBC.
Приложение указывает, какое поведение оно проявляет с атрибутом среды SQL_ATTR_ODBC_VERSION, но атрибут не влияет на подключение приложения к ODBC 2.x или ODBC 3.x driver. ODBC 3.Приложение x может подключаться к ODBC 2.x или 3.X driver, независимо от того, какой параметр атрибута среды.
ODBC 3.Приложения x никогда не должны вызывать SQLAllocEnv. В результате, если диспетчер драйверов получает вызов SQLAllocEnv, он распознает приложение как ODBC 2.приложение x .
Атрибут SQL_ATTR_ODBC_VERSION влияет на три различных аспекта ODBC 3.Поведение драйвера x :
атрибуты SQLSTATE
Типы данных для даты, времени и метки времени
Аргумент CatalogName в SQLTables принимает шаблоны поиска в ODBC 3.x, но не в ODBC 2.X
Параметр атрибута среды SQL_ATTR_ODBC_VERSION не влияет на SQLSetParam или SQLBindParam. SQLColAttribute также не влияет на этот бит. Хотя SQLColAttribute возвращает атрибуты, затронутые версией ODBC (тип даты, точность, масштаб и длина), предполагаемое поведение определяется значением аргумента FieldIdentifier . Если FieldIdentifier равно SQL_DESC_TYPE, SQLColAttribute возвращает ODBC 3.коды x для даты, времени и метки времени; если FieldIdentifier равно SQL_COLUMN_TYPE, SQLColAttribute возвращает ODBC 2.коды x для даты, времени и метки времени.
Этот раздел содержит следующие подразделы.