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


Функции драйвера

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

Функция или

атрибут инструкции
Комментарии
SQL_ATTR_ROW_STATUS_PTR Задает адрес массива состояния строки, заполненного SQLFetch и SQLFetchScroll. Этот массив также заполняется SQLSetPos, если SQLSetPos вызывается в состоянии инструкции S6. Если SQLSetPos вызывается в состоянии S7, этот массив не заполняется, но массив, на который указывает аргумент RowStatusArray SQLExtendedFetch, заполняется. Дополнительные сведения см. в разделе "Переходы инструкций " в приложении B: таблицы перехода состояния ODBC.
SQL_ATTR_ROWS_FETCHED_PTR Задает адрес буфера, в котором SQLFetch и SQLFetchScroll возвращают количество строк, извлекаемых. Если вызывается SQLExtendedFetch , этот буфер не заполняется, но аргумент RowCountPtr указывает на количество строк, извлекаемых.
SQL_ATTR_ROW_ARRAY_SIZE Задает размер набора строк, используемый SQLFetch и SQLFetchScroll.
SQL_ROWSET_SIZE Задает размер набора строк, используемый SQLExtendedFetch. Драйверы ODBC 3.x реализуют это, если они хотят работать с приложениями ODBC 2.x, которые вызывают SQLExtendedFetch или SQLSetPos.
SQLBulkOperations Если драйвер ODBC 3.x должен работать с приложениями ODBC 2.x, используюющими SQLSetPos с операцией SQL_ADD, драйвер должен поддерживать SQLSetPos с операцией SQL_ADD в дополнение к SQLBulkOperations с операцией SQL_ADD.
Sqlextendedfetch Возвращает указанный набор строк. Драйверы ODBC 3.x реализуют это, если они хотят работать с приложениями ODBC 2.x, которые вызывают SQLExtendedFetch или SQLSetPos. Ниже приведены сведения о реализации.

— Драйвер извлекает размер набора строк из значения атрибута оператора SQL_ROWSET_SIZE.
— Драйвер извлекает адрес массива состояния строки из аргумента RowStatusArray , а не атрибута оператора SQL_ATTR_ROW_STATUS_PTR. Аргумент RowStatusArray в вызове SQLExtendedFetch не должен быть пустым указателем. (Обратите внимание, что в ODBC 3.x атрибут инструкции SQL_ATTR_ROW_STATUS_PTR может быть указателем null.)
— Драйвер извлекает адрес извлекаемого буфера строк из аргумента RowCountPtr , а не атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR.
— Драйвер возвращает SQLSTATE 01S01 (ошибка в строке), чтобы указать, что произошла ошибка во время получения строк вызовом SQLExtendedFetch. Драйвер ODBC 3.x должен возвращать SQLSTATE 01S01 (ошибка в строке), только если вызывается SQLExtendedFetch , а не при вызове SQLFetch или SQLFetchScroll . Чтобы сохранить обратную совместимость, когда SQLSTATE 01S01 (ошибка в строке) возвращается SQLExtendedFetch, диспетчер драйверов не упорядочивает записи состояния в очереди ошибок в соответствии с правилами, указанными в разделе "Последовательность записей состояния" в SQLGetDiagField.
SQLFetch Возвращает следующий набор строк. Ниже приведены сведения о реализации.

— Драйвер извлекает размер набора строк из значения атрибута оператора SQL_ATTR_ROW_ARRAY_SIZE.
— Драйвер извлекает адрес массива состояния строки из атрибута оператора SQL_ATTR_ROW_STATUS_PTR.
— Драйвер извлекает адрес извлекаемого буфера строк из атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR.
— приложение может смешивать вызовы между SQLFetchScroll и SQLFetch.
- SQLFetch возвращает закладки, если столбец 0 привязан.
- SqlFetch можно вызвать для возврата нескольких строк.
— Драйвер не возвращает SQLSTATE 01S01 (ошибка в строке), чтобы указать, что произошла ошибка во время получения строк вызовом SQLFetch.
SQLFetchScroll Возвращает указанный набор строк. Ниже приведены сведения о реализации.

— Драйвер извлекает размер набора строк из атрибута инструкции SQL_ATTR_ROW_ARRAY_SIZE.
— Драйвер извлекает адрес массива состояния строки из атрибута оператора SQL_ATTR_ROW_STATUS_PTR.
— Драйвер извлекает адрес извлекаемого буфера строк из атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR.
— приложение может смешивать вызовы между SQLFetchScroll и SQLFetch.
— Драйвер не возвращает SQLSTATE 01S01 (ошибка в строке), чтобы указать, что произошла ошибка во время получения строк вызовом SQLFetchScroll.
Sqlsetpos Выполняет различные размещенные операции. Ниже приведены сведения о реализации.

— Это можно назвать в заявлениях состояния S6 или S7. Дополнительные сведения см. в разделе "Переходы инструкций " в приложении B: таблицы перехода состояния ODBC.
— Если это вызывается в состоянии инструкции S5 или S6, драйвер извлекает размер набора строк из атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR и адрес массива состояния строки из атрибута инструкции SQL_ATTR_ROW_STATUS_PTR.
— Если это вызывается в состоянии инструкции S7, драйвер извлекает размер набора строк из атрибута оператора SQL_ROWSET_SIZE и адрес массива состояния строки из аргумента RowStatusArray sqlExtendedFetch.
— Драйвер возвращает SQLSTATE 01S01 (ошибка в строке), чтобы указать, что произошла ошибка во время получения строк вызовом SQLSetPos , чтобы выполнить массовую операцию при вызове функции в состоянии S7. Чтобы сохранить обратную совместимость, если SQLSTATE 01S01 (ошибка в строке) возвращается SQLSetPos, диспетчер драйверов не упорядочивает записи состояния в очереди ошибок в соответствии с правилами, указанными в разделе "Последовательность записей состояния" в SQLGetDiagField.
— Если драйвер должен работать с приложениями ODBC 2.x, которые вызывают SQLSetPos с аргументом операции SQL_ADD, драйвер должен поддерживать SQLSetPos с аргументом операции SQL_ADD.