Бөлісу құралы:


SQLSetDescField и SQLSetDescRec (библиотека курсоров)

Внимание

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

В этом разделе рассматривается использование функций SQLSetDescField и SQLSetDescRec в библиотеке курсоров. Общие сведения об этих функциях см. в разделе "Функция SQLSetDescField" и функция SQLSetDescRec.

Библиотека курсоров выполняет SQLSetDescField при вызове, чтобы вернуть значение полей, заданных для столбцов закладок:

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DATETIME_INTERVAL_CODE

SQL_DESC_SCALE

SQL_DESC_PRECISION

SQL_DESC_TYPE

SQL_DESC_NAME

SQL_DESC_UNNAMED

SQL_DESC_NULLABLE

Библиотека курсоров выполняет вызовы SQLSetDescRec для столбца закладки.

При работе с драйвером ODBC 2.x библиотека курсоров возвращает SQLSTATE HY090 (недопустимая строка или длина буфера) при вызове SQLSetDescField или SQLSetDescRec для задания поля SQL_DESC_OCTET_LENGTH записи закладки ARD значением не равно 4. При работе с драйвером ODBC 3.x библиотека курсоров позволяет буферу иметь любой размер.

Библиотека курсоров выполняет SQLSetDescField при вызове, чтобы вернуть значение поля SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE или SQL_DESC_ROW_STATUS_PTR. Эти поля можно вернуть для любой строки, а не только строки закладки.

Библиотека курсоров не выполняет SQLSetDescField , чтобы изменить любое поле дескриптора, отличное от указанных ранее полей. Если приложение вызывает SQLSetDescField для задания любого другого поля во время загрузки библиотеки курсоров, вызов передается драйверу.

Библиотека курсоров поддерживает динамическое изменение полей SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR строк любого дескриптора строки приложения (после вызова SQLExtendedFetch, SQLFetch или SQLFetchScroll). Поле SQL_DESC_OCTET_LENGTH_PTR можно изменить на указатель null только на отмену привязки буфера длины для столбца.

Библиотека курсоров не поддерживает изменение поля SQL_DESC_BIND_TYPE в APD или ARD при открытии курсора. Поле SQL_DESC_BIND_TYPE можно изменить только после закрытия курсора и до открытия нового курсора. Единственные поля дескриптора, которые библиотека курсоров поддерживает изменение при открытии курсора, являются SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR и SQL_DESC_ROWS_PROCESSED_PTR.

Библиотека курсоров не поддерживает изменение поля SQL_DESC_COUNT ARD после вызова SQLExtendedFetch или SQLFetchScroll до закрытия курсора.