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


Функции диспетчера драйверов

В следующей таблице показано, как диспетчер драйверов ODBC 3.x сопоставляет вызовы драйверов ODBC 2.x и ODBC 3.x.

Функция или

атрибут инструкции
Комментарии
SQL_ATTR_FETCH_BOOKMARK_PTR Указывает на закладку, используемую с SQLFetchScroll. Ниже приведены сведения о реализации.

— Когда приложение устанавливает это в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x кэширует его. Он различает указатель и передает значение драйверу ODBC 2.x в аргументе FetchOffset SQLExtendedFetch, когда SQLFetchScroll позже вызывается приложением.
— Когда приложение устанавливает это в драйвере ODBC 3.x, диспетчер драйверов ODBC 3.x передает вызов драйверу.
SQL_ATTR_ROW_STATUS_PTR Указывает на массив состояния строки, заполненный SQLFetch, SQLFetchScroll, SQLBulkOperations и SQLSetPos. Ниже приведены сведения о реализации.

— Когда приложение устанавливает это в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x кэширует его значение. Он передает это значение драйверу ODBC 2.x в аргументе RowStatusArray SQLExtendedFetch при вызове SQLFetchScroll или SQLFetch.
— Когда приложение устанавливает это в драйвере ODBC 3.x, диспетчер драйверов ODBC 3.x передает вызов драйверу.
— В состоянии S6, если приложение задает SQL_ATTR_ROW_STATUS_PTR, а затем вызывает SQLBulkOperationsоперацией SQL_ADD) или SQLSetPos без первого вызова SQLFetch или SQLFetchScroll, возвращается SQLSTATE HY011 (атрибут не может быть задан).
SQL_ATTR_ROWS_FETCHED_PTR Указывает на буфер, в котором SQLFetch и SQLFetchScroll возвращают количество строк, извлекаемых. Ниже приведены сведения о реализации.

— Когда приложение устанавливает это в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x кэширует его значение. Он передает это значение драйверу ODBC 2.x в аргументе RowCountPtr SQLExtendedFetch при вызове SQLFetch или SQLFetchScroll.
— Когда приложение устанавливает это в драйвере ODBC 3.x, диспетчер драйверов ODBC 3.x передает вызов драйверу.
SQL_ATTR_ROW_ARRAY_SIZE Задает размер набора строк. Ниже приведены сведения о реализации.

— Когда приложение устанавливает это в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x сопоставляет его с атрибутом оператора SQL_ROWSET_SIZE.
— Когда приложение устанавливает это в драйвере ODBC 3.x, диспетчер драйверов ODBC 3.x передает вызов драйверу.
— Если приложение, работающее с драйвером ODBC 3.x , вызывает SQLSetScrollOptions, SQL_ROWSET_SIZE задается значением в аргументе RowsetSize , если базовый драйвер не поддерживает SQLSetScrollOptions.
SQL_ROWSET_SIZE Задает размер набора строк, используемый SQLExtendedFetch, когда SQLExtendedFetch вызывается приложением ODBC 2.x. Ниже приведены сведения о реализации.

— Когда приложение задает это, диспетчер драйверов ODBC 3.x передает вызов драйверу независимо от версии драйвера.
— Если приложение, работающее с драйвером ODBC 2.x , вызывает SQLSetScrollOptions, SQL_ROWSET_SIZE задается значением в аргументе RowsetSize .
SQLBulkOperations Выполняет операцию вставки, обновление, удаление или получение операций закладки. Ниже приведены сведения о реализации.

— Когда приложение вызывает SQLBulkOperations с операцией SQL_ADD в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x сопоставляет его с SQLSetPos с операцией SQL_ADD.
— При работе с драйвером ODBC 2.x, который не поддерживает SQLSetPos с операцией SQL_ADD, диспетчер драйверов ODBC 3.x не сопоставляет SQLSetPos с операцией SQL_ADD с SQLBulkOperations с операцией SQL_ADD. Это связано с тем, что SQLBulkOperations не может вызываться в состоянии S7, которое в ODBC 2.x было единственным состоянием, в котором можно было вызвать SQLSetPos .
— Если приложение вызывает SQLBulkOperations с операцией SQL_ADD в драйвере ODBC 2.x перед вызовом SQLFetchScroll, диспетчер драйверов ODBC 3.x возвращает ошибку.
Sqlextendedfetch Возвращает указанный набор строк. За исключением только что указанного ограничения, диспетчер драйверов ODBC 3.x передает вызовы SQLExtendedFetch драйверу независимо от версии драйвера.
SQLFetch Возвращает следующий набор строк. Ниже приведены сведения о реализации.

— Когда приложение вызывает SQLFetch в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x сопоставляет его с SQLExtendedFetch. Аргумент FetchOrientation sqlExtendedFetch имеет значение SQL_FETCH_NEXT. Диспетчер драйверов использует кэшированное значение атрибута инструкции SQL_ATTR_ROW_STATUS_PTR для аргумента RowStatusArray и кэшированного значения атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR для аргумента RowCountPtr .
— Приложение ODBC 3.x может смешивать вызовы SQLFetch и SQLFetchScroll в драйвере ODBC 2.x, так как диспетчер драйверов ODBC 3.x сопоставляет SQLFetch с SQLExtendedFetch при вызове приложения в драйвере ODBC 2.x.
— Если драйвер ODBC 2.x не поддерживает SQLExtendedFetch, диспетчер драйверов ODBC 3.x не сопоставляет SQLFetch или SQLFetchScroll с SQLExtendedFetch при вызове приложения в этом драйвере. Если приложение пытается задать SQL_ATTR_ROW_ARRAY_SIZE значением больше 1, возвращается sqlSTATE HYC00 (необязательный компонент не реализован).
— За исключением только что отмеченных ограничений, диспетчер драйверов ODBC 3.x передает вызовы SQLFetch драйверу независимо от версии драйвера.
SQLFetchScroll Возвращает указанный набор строк. Ниже приведены сведения о реализации.

— Когда приложение вызывает SQLFetchScroll в драйвере ODBC 2.x, диспетчер драйверов ODBC 3.x сопоставляет его с SQLExtendedFetch. Он использует кэшированное значение атрибута инструкции SQL_ATTR_ROW_STATUS_PTR для аргумента RowStatusArray и кэшированного значения атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR для аргумента RowCountPtr . Если аргумент FetchOrientation в SQLFetchScroll SQL_FETCH_BOOKMARK, он использует кэшированное значение атрибута инструкции SQL_ATTR_FETCH_BOOKMARK_PTR для аргумента FetchOffset и возвращает ошибку, если аргумент FetchOffset SQLFetchScroll не равен 0.
— Когда приложение вызывает это в драйвере ODBC 3.x, диспетчер драйверов ODBC 3.x передает вызов драйверу.
Sqlsetpos Выполняет различные размещенные операции. Диспетчер драйверов ODBC 3.x передает вызовы SQLSetPos драйверу независимо от версии драйвера.
SQLSetScrollOptions Если диспетчер драйверов сопоставляет SQLSetScrollOptions для приложения, работающего с драйвером ODBC 3.x , который не поддерживает SQLSetScrollOptions, диспетчер драйверов задает параметр инструкции SQL_ROWSET_SIZE, а не атрибут инструкции SQL_ATTR_ROW_ARRAY_SIZE, аргумент RowsetSize в SQLSetScrollOption. В результате SQLSetScrollOptions нельзя использовать приложением при получении нескольких строк вызовом SQLFetch или SQLFetchScroll. Его можно использовать только при получении нескольких строк вызовом SQLExtendedFetch.