Функция SQLSetStmtAttr

Соответствия
Представлена версия: соответствие стандартам ODBC 3.0: ISO 92

Сводка
SQLSetStmtAttr задает атрибуты, связанные с инструкцией.

Заметка

Дополнительные сведения о том, что диспетчер драйверов сопоставляет эту функцию с тем, когда приложение ODBC 3.x работает с драйвером ODBC 2.x, см. в разделе "Функции замены сопоставления для обратной совместимости приложений".

Синтаксис

  
SQLRETURN SQLSetStmtAttr(  
     SQLHSTMT      StatementHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Аргументы

ОператорHandle
[Входные данные] Дескриптор инструкции.

Атрибут
[Входные данные] Параметр для задания, указанный в разделе "Комментарии".

ValuePtr
[Входные данные] Значение, связанное с атрибутом. В зависимости от значения Атрибута ЗначениеPtr будет одним из следующих вариантов:

  • Дескриптор ODBC.

  • Значение SQLUINTEGER.

  • Значение SQLULEN.

  • Указатель на одно из следующих элементов:

    • Строка символов, завершающаяся значением NULL.

    • Двоичный буфер.

    • Значение или массив типа SQLLEN, SQLULEN или SQLUSMALLINT.

    • Определяемое драйвером значение.

Если аргумент Атрибута является значением для конкретного драйвера, Значение ValuePtr может быть целое число со знаком.

StringLength
[Входные данные] Если атрибут является атрибутом ODBC, а ValuePtr указывает на символьную строку или двоичный буфер, этот аргумент должен быть длиной *ValuePtr. Если атрибут является атрибутом ODBC, а ValuePtr является целым числом, StringLength игнорируется.

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

  • Если ЗначениеPtr является указателем на символьную строку, СтрокаLength — это длина строки или SQL_NTS.

  • Если ЗначениеPtr является указателем на двоичный буфер, приложение помещает результат макроса SQL_LEN_BINARY_ATTR(длина) в StringLength. Это помещает отрицательное значение в StringLength.

  • Если ЗначениеPtr является указателем на значение, отличное от символьной строки или двоичной строки, строка StringLength должна иметь значение SQL_IS_POINTER.

  • Если Значение ValuePtr содержит значение фиксированной длины, СтрокаLength либо SQL_IS_INTEGER, либо SQL_IS_UINTEGER соответствующим образом.

Возвраты

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR или SQL_INVALID_HANDLE.

Диагностика

Когда SQLSetStmtAttr возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE может быть получено путем вызова SQLGetDiagRec с handleType SQL_HANDLE_STMT и дескриптором инструкцииHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращаются SQLSetStmtAttr и объясняются каждый из них в контексте этой функции. Нотация "(DM)" предшествует описаниям SQLSTATEs, возвращаемым диспетчером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.

SQLSTATE Error Description
01000 Общее предупреждение Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.)
01S02 Изменено значение параметра Драйвер не поддерживал значение, указанное в ValuePtr, или значение, указанное в ValuePtr, было недопустимым из-за условий выполнения, поэтому драйвер заменил аналогичное значение. (SQLGetStmtAttr можно вызвать для определения временно заменяемого значения.) Значение замены допустимо для оператора StatementHandle , пока курсор не будет закрыт, после чего атрибут инструкции возвращается к предыдущему значению. Атрибуты инструкции, которые могут быть изменены:

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ATTR_ROW_ARRAY_SIZE SQL_ ATTR_SIMULATE_CURSOR

(Функция возвращает SQL_SUCCESS_WITH_INFO.)
08S01 Сбой связи Связь между драйвером и источником данных, к которому был подключен драйвер, произошел сбой до завершения обработки функции.
24000 Недопустимое состояние курсора Атрибут был SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR или SQL_ATTR_USE_BOOKMARKS, а курсор был открыт.
HY000 Общая ошибка Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину.
HY001 Ошибка выделения памяти Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции.
HY009 Недопустимое использование указателя NULL Аргумент Атрибута определил атрибут оператора, который требовал строковый атрибут, и аргумент ValuePtr был пустым указателем.
HY010 Ошибка последовательности функций (DM) Асинхронно выполняющаяся функция была вызвана для дескриптора соединения, связанного с ОператоромHandle. Эта асинхронная функция по-прежнему выполнялась при вызове функции SQLSetStmtAttr .

(DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ОператораHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров.

(DM) асинхронно выполняющаяся функция была вызвана для StatementHandle и по-прежнему выполнялась при вызове этой функции.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для ОператораHandle и возвращены SQL_NEED_DATA. Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов.
HY011 Атрибут не может быть задан сейчас Атрибут был SQL_ATTR_CONCURRENCY, SQL_ ATTR_CURSOR_TYPE, SQL_ ATTR_SIMULATE_CURSOR или SQL_ ATTR_USE_BOOKMARKS, и был подготовлен оператор.
HY013 Ошибка управления памятью Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти.
HY017 Недопустимое использование дескриптора автоматического выделенного дескриптора (DM) Аргумент атрибута был SQL_ATTR_IMP_ROW_DESC или SQL_ATTR_IMP_PARAM_DESC.

(DM) Аргумент атрибута был SQL_ATTR_APP_ROW_DESC или SQL_ATTR_APP_PARAM_DESC, и значение в ValuePtr было неявно выделенным дескриптором, отличным от дескриптора, первоначально выделенного для ARD или APD.
HY024 Недопустимое значение атрибута Учитывая указанное значение атрибута , недопустимое значение было указано в ValuePtr. (Диспетчер драйверов возвращает этот sqlSTATE только для атрибутов подключения и инструкций, которые принимают дискретный набор значений, например SQL_ATTR_ACCESS_MODE или SQL_ ATTR_ASYNC_ENABLE. Для всех других атрибутов подключения и инструкции драйвер должен проверить значение, указанное в ValuePtr.)

Аргумент атрибута был SQL_ATTR_APP_ROW_DESC или SQL_ATTR_APP_PARAM_DESC, и ValuePtr был явно выделенным дескриптором дескриптора, который не находится в том же соединении, что и аргумент StatementHandle.
HY090 Недопустимая длина строки или буфера (DM) *ValuePtr — это символьная строка, а аргумент StringLength меньше 0, но не был SQL_NTS.
HY092 Недопустимый идентификатор атрибута или параметра (DM) Значение, указанное для атрибута аргумента, недопустимо для версии ODBC, поддерживаемой драйвером.

(DM) Значение, указанное для атрибута аргумента, было атрибутом только для чтения.
HY117 Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function.
HYC00 Необязательный компонент не реализован Значение, указанное для атрибута аргумента, было допустимым атрибутом инструкции ODBC для версии ODBC, поддерживаемой драйвером, но не поддерживается драйвером.

Аргумент атрибута был SQL_ATTR_ASYNC_ENABLE, а вызов SQLGetInfo с InfoType SQL_ASYNC_MODE возвращает SQL_AM_CONNECTION.

Аргумент атрибута был SQL_ATTR_ENABLE_AUTO_IPD, а значение атрибута подключения SQL_ATTR_AUTO_IPD было SQL_FALSE.
HYT01 Время ожидания для подключения истекло Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Драйвер не поддерживает эту функцию (DM) Драйвер, связанный с StatementHandle , не поддерживает функцию.
S1118 Драйвер не поддерживает асинхронное уведомление При вызове SQLSetStmtAttr для задания SQL_ATTR_ASYNC_STMT_EVENT; асинхронное уведомление не поддерживается драйвером.

Комментарии

Атрибуты инструкции для инструкции остаются в силе до тех пор, пока они не будут изменены другим вызовом SQLSetStmtAttr или до тех пор, пока инструкция не будет удалена путем вызова SQLFreeHandle. Вызов SQLFreeStmt с помощью параметра SQL_CLOSE, SQL_UNBIND или SQL_RESET_PARAMS не сбрасывает атрибуты инструкции.

Некоторые атрибуты инструкции поддерживают подстановку аналогичного значения, если источник данных не поддерживает значение, указанное в ValuePtr. В таких случаях драйвер возвращает SQL_SUCCESS_WITH_INFO и SQLSTATE 01S02 (значение параметра изменено). Например, если атрибут SQL_ATTR_CONCURRENCY и ValuePtr SQL_CONCUR_ROWVER, а если источник данных не поддерживает это, драйвер заменяет SQL_CONCUR_VALUES и возвращает SQL_SUCCESS_WITH_INFO. Чтобы определить заменяемое значение, приложение вызывает SQLGetStmtAttr.

Формат набора сведений со значением ValuePtr зависит от указанного атрибута. SQLSetStmtAttr принимает сведения о атрибутах в одном из двух разных форматов: символьной строке или целочисленном значении. Формат каждого из них указывается в описании атрибута. Этот формат применяется к сведениям, возвращаемым для каждого атрибута в SQLGetStmtAttr. Строки символов, на которые указывает аргумент ValuePtr SQLSetStmtAttr, имеют длину StringLength.

Заметка

Возможность задавать атрибуты инструкции на уровне подключения путем вызова SQLSetConnectAttr устарела в ODBC 3.x. Приложения ODBC 3.x никогда не должны задавать атрибуты инструкции на уровне подключения. Атрибуты инструкции ODBC 3.x нельзя задать на уровне подключения, за исключением атрибутов SQL_ATTR_METADATA_ID и SQL_ATTR_ASYNC_ENABLE, которые являются атрибутами подключения и атрибутами инструкции, и могут быть заданы на уровне подключения или на уровне инструкции.

Заметка

Драйверы ODBC 3.x должны поддерживать только эту функцию, если они должны работать с приложениями ODBC 2.x, которые задают параметры инструкции ODBC 2.x на уровне подключения. Дополнительные сведения см. в разделе "Настройка параметров инструкции на уровне подключения" в разделе "Сопоставление SQLSetConnectOption" в приложении G. Рекомендации по драйверам для обратной совместимости.

Атрибуты оператора, которые задают поля дескриптора

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

Внимание

Вызов SQLSetStmtAttr для одной инструкции может повлиять на другие инструкции. Это происходит, когда APD или ARD, связанные с инструкцией, явно выделяется и также связана с другими операторами. Так как SQLSetStmtAttr изменяет APD или ARD, изменения применяются ко всем операторам, с которым связан дескриптор. Если это не обязательное поведение, приложение должно отключать этот дескриптор от других инструкций (вызывая SQLSetStmtAttr , чтобы задать для поля SQL_ATTR_APP_ROW_DESC или SQL_ATTR_APP_PARAM_DESC другой дескриптор) перед вызовом SQLSetStmtAttr еще раз.

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

При выделении инструкции (см . SQLAllocHandle), четыре дескриптора автоматически выделяются и связаны с инструкцией. Явно выделенные дескрипторные дескрипторы можно связать с инструкцией, вызвав SQLAllocHandleHandleType SQL_HANDLE_DESC для выделения дескриптора, а затем вызова SQLSetStmtAttr для связывания дескриптора с оператором.

Атрибуты инструкции в следующей таблице соответствуют полям заголовка дескриптора.

Атрибут оператора Поле заголовка Desc.
SQL_ATTR_PARAM_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR API)
SQL_ATTR_PARAM_BIND_TYPE SQL_DESC_BIND_TYPE API)
SQL_ATTR_PARAM_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR API)
SQL_ATTR_PARAM_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IPD
SQL_ATTR_PARAMS_PROCESSED_PTR SQL_DESC_ROWS_PROCESSED_PTR IPD
SQL_ATTR_PARAMSET_SIZE SQL_DESC_ARRAY_SIZE API)
SQL_ATTR_ROW_ARRAY_SIZE SQL_DESC_ARRAY_SIZE ARD
SQL_ATTR_ROW_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR ARD
SQL_ATTR_ROW_BIND_TYPE SQL_DESC_BIND_TYPE ARD
SQL_ATTR_ROW_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR ARD
SQL_ATTR_ROW_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IRD
SQL_ATTR_ROWS_FETCHED_PTR SQL_DESC_ROWS_PROCESSED_PTR IRD

Атрибуты инструкции

В настоящее время определенные атрибуты и версия ODBC, в которой они были представлены, показаны в следующей таблице; Ожидается, что дополнительные атрибуты будут определены драйверами для использования различных источников данных. Диапазон атрибутов зарезервирован ODBC; Разработчики драйверов должны зарезервировать значения для собственного использования драйвера из Open Group. Дополнительные сведения см. в разделе "Типы данных для конкретного драйвера", "Типы дескриптора", "Типы сведений", "Типы диагностики" и "Атрибуты".

Атрибут Содержимое ValuePtr
SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) Дескриптор APD для последующих вызовов SQLExecute и SQLExecDirect в дескрипторе инструкции. Начальное значение этого атрибута — дескриптор, неявно выделенный при первоначальном выделении инструкции. Если для этого атрибута задано значение SQL_NULL_DESC или дескриптор, изначально выделенный дескриптором, явно выделенный маркер APD, который ранее связан с дескриптором инструкции, отключается от него, а дескриптор инструкции возвращается к неявно выделенному дескриптору APD.

Этот атрибут не может быть задан дескриптором, который неявно выделен для другой инструкции или другой дескриптор дескриптора, который неявно задан в той же инструкции; Неявно выделенные дескрипторные дескрипторы не могут быть связаны с несколькими операторами или дескрипторами.
SQL_ATTR_APP_ROW_DESC (ODBC 3.0) Дескриптор ARD для последующих выборок в дескрипторе инструкции. Начальное значение этого атрибута — дескриптор, неявно выделенный при первоначальном выделении инструкции. Если для этого атрибута задано значение SQL_NULL_DESC или дескриптор, изначально выделенный дескриптором, явно выделенный дескриптор ARD, связанный с дескриптором инструкции, отключается от него, а дескриптор инструкции возвращается к неявно выделенному дескриптору ARD.

Этот атрибут не может быть задан дескриптором, который неявно выделен для другой инструкции или другой дескриптор дескриптора, который неявно задан в той же инструкции; Неявно выделенные дескрипторные дескрипторы не могут быть связаны с несколькими операторами или дескрипторами.
SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) Значение SQLULEN, указывающее, выполняется ли функция с указанной инструкцией асинхронно:

SQL_ASYNC_ENABLE_OFF = отключить асинхронную поддержку выполнения уровня инструкций (по умолчанию).

SQL_ASYNC_ENABLE_ON = включение асинхронной поддержки выполнения на уровне инструкций.

Дополнительные сведения см. в разделе "Асинхронное выполнение" (метод опроса).

Для драйверов с поддержкой асинхронного выполнения уровня инструкции атрибут инструкции SQL_ATTR_ASYNC_ENABLE доступен только для чтения. Его значение совпадает со значением атрибута уровня соединения с тем же именем во время выделения дескриптора инструкции.

Вызов SQLSetStmtAttr для задания SQL_ATTR_ASYNC_ENABLE, когда SQL_ASYNC_MODE InfoType возвращает SQL_AM_CONNECTION возвращает SQLSTATE HYC00 (необязательный компонент не реализован). Дополнительные сведения см. в разделе "Функция SQLSetConnectAttr" для получения дополнительных сведений.
SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3.8) Значение SQLPOINTER, которое является дескриптором событий.

Уведомление о завершении асинхронных функций включено путем вызова SQLSetStmtAttr , чтобы задать атрибут SQL_ATTR_ASYNC_STMT_EVENT и указать дескриптор события.
SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3.8) SQLPOINTER для асинхронной функции обратного вызова.

Только диспетчер драйверов может вызывать функцию SQLSetStmtAttr драйвера с этим атрибутом.
SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) SQLPOINTER в структуре контекста

Только диспетчер драйверов может вызывать функцию SQLSetStmtAttr драйвера с этим атрибутом.
SQL_ATTR_CONCURRENCY (ODBC 2.0) Значение SQLULEN, указывающее параллелизм курсора:

SQL_CONCUR_READ_ONLY = Курсор доступен только для чтения. Никаких обновлений не разрешено.

SQL_CONCUR_LOCK = Курсор использует самый низкий уровень блокировки, чтобы убедиться, что строка может быть обновлена.

SQL_CONCUR_ROWVER = Курсор использует управление оптимистическим параллелизмом, сравнивая версии строк, такие как SQLBase ROWID или Sybase TIMESTAMP.

SQL_CONCUR_VALUES = Cursor использует управление оптимистическим параллелизмом, сравнивая значения.

Значение по умолчанию для SQL_ATTR_CONCURRENCY равно SQL_CONCUR_READ_ONLY.

Этот атрибут нельзя указать для открытого курсора. Дополнительные сведения см. в разделе "Типы параллелизма".

Если атрибут SQL_ATTR_CURSOR_TYPE изменяется на тип, который не поддерживает текущее значение SQL_ATTR_CONCURRENCY, значение SQL_ATTR_CONCURRENCY будет изменено во время выполнения, и предупреждение, выданное при вызове SQLExecDirect или SQLPrepare.

Если драйвер поддерживает инструкцию SELECT FOR UPDATE и такой оператор выполняется, пока для значения SQL_ATTR_CONCURRENCY задано значение SQL_CONCUR_READ_ONLY, будет возвращена ошибка. Если значение SQL_ATTR_CONCURRENCY изменяется на значение, которое драйвер поддерживает для некоторых значений SQL_ATTR_CURSOR_TYPE, но не для текущего значения SQL_ATTR_CURSOR_TYPE, значение SQL_ATTR_CURSOR_TYPE будет изменено во время выполнения, и при вызове SQLExecDirect или SQLPrepare будет выдано значение SQLSTATE 01S02 (значение параметра изменено).

Если указанная параллелизм не поддерживается источником данных, драйвер заменяет другую параллелизм и возвращает значение SQLSTATE 01S02 (значение параметра изменено). Для SQL_CONCUR_VALUES драйвер заменяет SQL_CONCUR_ROWVER и наоборот. Для SQL_CONCUR_LOCK драйвер заменяет SQL_CONCUR_ROWVER или SQL_CONCUR_VALUES. Срок действия заменяемого значения не проверяется до времени выполнения.

Дополнительные сведения о связи между SQL_ATTR_CONCURRENCY и другими атрибутами курсора см. в разделе "Характеристики курсора" и "Тип курсора".
SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) Значение SQLULEN, указывающее уровень поддержки, который требуется приложению. Установка этого атрибута влияет на последующие вызовы SQLExecDirect и SQLExecute.

SQL_NONSCROLLABLE = курсоры, доступные для прокрутки, не требуются для дескриптора инструкции. Если приложение вызывает SQLFetchScroll для этого дескриптора, SQL_FETCH_NEXT единственным допустимым значением FetchOrientation . Это значение по умолчанию.

SQL_SCROLLABLE = курсоры, доступные для прокрутки, необходимы для дескриптора инструкции. При вызове SQLFetchScroll приложение может указать любое допустимое значение FetchOrientation, чтобы обеспечить размещение курсора в режимах, отличных от последовательного режима.

Дополнительные сведения о прокручиваемых курсорах см. в разделе "Прокручиваемые курсоры". Дополнительные сведения о связи между SQL_ATTR_CURSOR_SCROLLABLE и другими атрибутами курсора см. в разделе "Характеристики курсора" и "Тип курсора"
SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) Значение SQLULEN, указывающее, будут ли курсоры в дескрипторе инструкции вносить изменения в результирующий набор другим курсором. Установка этого атрибута влияет на последующие вызовы SQLExecDirect и SQLExecute. Приложение может считывать значение этого атрибута, чтобы получить исходное состояние или его состояние, как последнее, заданное приложением.

SQL_UNSPECIFIED = не указано, какой тип курсора является, и указывает, являются ли курсоры в дескрипторе инструкции видимыми изменениями, внесенными в результирующий набор другим курсором. Курсоры в дескрипторе инструкции могут не отображаться, некоторые или все такие изменения. Это значение по умолчанию.

SQL_INSENSITIVE = все курсоры в дескрипторе инструкции показывают результирующий набор без отражения изменений, внесенных в него любым другим курсором. Нечувствительные курсоры доступны только для чтения. Это соответствует статическому курсору, который имеет параллелизм, доступный только для чтения.

SQL_SENSITIVE = все курсоры в дескрипторе инструкции вносят видимые все изменения, внесенные в результирующий набор другим курсором.

Дополнительные сведения о связи между SQL_ATTR_CURSOR_SENSITIVITY и другими атрибутами курсора см. в разделе "Характеристики курсора" и "Тип курсора".
SQL_ATTR_CURSOR_TYPE (ODBC 2.0) Значение SQLULEN, указывающее тип курсора:

SQL_CURSOR_FORWARD_ONLY = курсор прокручивается только вперед.

SQL_CURSOR_STATIC = данные в результирующем наборе являются статическими.

SQL_CURSOR_KEYSET_DRIVEN = драйвер сохраняет и использует ключи для количества строк, указанных в атрибуте инструкции SQL_ATTR_KEYSET_SIZE.

SQL_CURSOR_DYNAMIC = драйвер сохраняет и использует только ключи для строк в наборе строк.

Значение по умолчанию — SQL_CURSOR_FORWARD_ONLY. Этот атрибут нельзя указать после подготовки инструкции SQL.

Если указанный тип курсора не поддерживается источником данных, драйвер заменяет другой тип курсора и возвращает SQLSTATE 01S02 (значение параметра изменено). Для смешанного или динамического курсора драйвер заменяет в порядке, управляемом набором ключей или статическим курсором. Для курсора на основе набора ключей драйвер заменяет статический курсор.

Дополнительные сведения о типах прокручиваемых курсоров см. в разделе "Типы курсоров с прокруткой". Дополнительные сведения о связи между SQL_ATTR_CURSOR_TYPE и другими атрибутами курсора см. в разделе "Характеристики курсора" и "Тип курсора".
SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) Значение SQLULEN, указывающее, выполняется ли автоматическое заполнение IPD:

SQL_TRUE = включает автоматическое заполнение IPD после вызова SQLPrepare. SQL_FALSE = выключает автоматическое заполнение IPD после вызова SQLPrepare. (Приложение по-прежнему может получать сведения о поле IPD путем вызова SQLDescribeParam, если поддерживается.) Значение атрибута инструкции по умолчанию SQL_ATTR_ENABLE_AUTO_IPD равно SQL_FALSE. Дополнительные сведения см. в разделе "Автоматическое заполнение IPD".
SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) SQLLEN * , указывающий на двоичное значение закладки. При вызове SQLFetchScroll с fFetchOrientation равным SQL_FETCH_BOOKMARK драйвер выбирает значение закладки из этого поля. Это поле по умолчанию используется для указателя NULL. Дополнительные сведения см. в разделе "Прокрутка по закладке".

Значение, на которое указывает это поле, не используется для удаления по закладкам, обновлению по закладкам или выборке операций с закладками в SQLBulkOperations, которые используют закладки, кэшированные в буферах набора строк.
SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) Дескриптор IPD. Значение этого атрибута — дескриптор, выделенный при первоначальном выделении инструкции. Приложение не может задать этот атрибут.

Этот атрибут можно получить путем вызова SQLGetStmtAttr, но не задать путем вызова SQLSetStmtAttr.
SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) Дескриптор IRD. Значение этого атрибута — дескриптор, выделенный при первоначальном выделении инструкции. Приложение не может задать этот атрибут.

Этот атрибут можно получить путем вызова SQLGetStmtAttr, но не задать путем вызова SQLSetStmtAttr.
SQL_ATTR_KEYSET_SIZE (ODBC 2.0) SQLULEN, указывающий количество строк в наборе ключей для курсора, управляемого набором ключей. Если размер набора ключей равен 0 (по умолчанию), курсор полностью управляется набором ключей. Если размер набора ключей больше 0, курсор смешан (на основе набора ключей в наборе ключей и динамически за пределами набора ключей). Размер набора ключей по умолчанию — 0. Дополнительные сведения о курсорах, управляемых набором ключей, см. в разделе "Курсоры на основе набора ключей".

Если указанный размер превышает максимальный размер набора ключей, драйвер заменяет этот размер и возвращает значение SQLSTATE 01S02 (значение параметра изменено).

SQLFetch или SQLFetchScroll возвращает ошибку, если размер набора ключей превышает 0 и меньше размера набора строк.
SQL_ATTR_MAX_LENGTH (ODBC 1.0) Значение SQLULEN, указывающее максимальный объем данных, возвращаемых драйвером из символа или двоичного столбца. Если значение ValuePtr меньше длины доступных данных, SQLFetch или SQLGetData усечение данных и возвращает SQL_SUCCESS. Если Значение ValuePtr равно 0 (по умолчанию), драйвер пытается вернуть все доступные данные.

Если указанная длина меньше минимального объема данных, которые может возвращать источник данных или превышает максимальный объем возвращаемых источников данных, драйвер заменяет это значение и возвращает значение SQLSTATE 01S02 (значение параметра изменено).

Значение этого атрибута можно задать на открытом курсоре; однако параметр может не входить в силу немедленно, в этом случае драйвер вернет SQLSTATE 01S02 (значение параметра изменено) и сбросит атрибут в исходное значение.

Этот атрибут предназначен для уменьшения сетевого трафика и должен поддерживаться только в том случае, если источник данных (в отличие от драйвера) в драйвере с несколькими уровнями может реализовать его. Этот механизм не должен использоваться приложениями для усечения данных; Чтобы усечь полученные данные, приложение должно указать максимальную длину буфера в аргументе BufferLength в SQLBindCol или SQLGetData.
SQL_ATTR_MAX_ROWS (ODBC 1.0) Значение SQLULEN, соответствующее максимальному количеству строк, возвращаемых приложению для инструкции SELECT . Если значение *ValuePtr равно 0 (по умолчанию), драйвер возвращает все строки.

Этот атрибут предназначен для уменьшения сетевого трафика. Концептуально он применяется при создании результирующий набор и ограничивает результирующий набор первым строкам ValuePtr . Если число строк в результирующем наборе больше Значения ValuePtr, результирующий набор усечен.

SQL_ATTR_MAX_ROWS применяется ко всем результирующих наборам инструкции, включая возвращаемые функциями каталога. SQL_ATTR_MAX_ROWS устанавливает максимальное значение числа строк курсора.

Драйвер не должен эмулировать поведение SQL_ATTR_MAX_ROWS для SQLFetch или SQLFetchScroll (если ограничения размера результирующего набора невозможно реализовать в источнике данных), если он не может гарантировать правильность реализации SQL_ATTR_MAX_ROWS.

Определяется драйвером, применяется ли SQL_ATTR_MAX_ROWS к операторам, отличным от инструкций SELECT (например, функциям каталога).

Значение этого атрибута можно задать на открытом курсоре; однако параметр может не входить в силу немедленно, в этом случае драйвер вернет SQLSTATE 01S02 (значение параметра изменено) и сбросит атрибут в исходное значение.
SQL_ATTR_METADATA_ID (ODBC 3.0) Значение SQLULEN, определяющее, как обрабатываются строковые аргументы функций каталога.

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

Если SQL_FALSE, строковые аргументы функций каталога не рассматриваются как идентификаторы. Дело является значительным. Они могут содержать шаблон строкового поиска или нет в зависимости от аргумента.

Значение по умолчанию — SQL_FALSE.

Аргумент TableType sqlTables, который принимает список значений, не влияет на этот атрибут.

SQL_ATTR_METADATA_ID также можно задать на уровне подключения. (Это и SQL_ATTR_ASYNC_ENABLE являются единственными атрибутами инструкции, которые также являются атрибутами соединения.)

Дополнительные сведения см. в разделе "Аргументы" в функциях каталога.
SQL_ATTR_NOSCAN (ODBC 1.0) Значение SQLULEN, указывающее, должен ли драйвер сканировать строки SQL для escape-последовательностей:

SQL_NOSCAN_OFF = драйвер сканирует строки SQL для escape-последовательностей (по умолчанию).

SQL_NOSCAN_ON = драйвер не сканирует строки SQL для escape-последовательностей. Вместо этого драйвер отправляет инструкцию непосредственно в источник данных.

Дополнительные сведения см. в разделе "Escape-последовательности" в ODBC.
SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) Значение SQLULEN *, указывающее на смещение, добавленное к указателям на изменение привязки динамических параметров. Если это поле не равно NULL, драйвер разыменовывает указатель, добавляет деконференцию значения к каждому из отложенных полей в записи дескриптора (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR) и использует новые значения указателя при привязке. По умолчанию для него задано значение NULL.

Смещение привязки всегда добавляется непосредственно к полям SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR. Если смещение изменяется на другое значение, новое значение по-прежнему добавляется непосредственно в значение в поле дескриптора. Новое смещение не добавляется к значению поля и более ранним смещениям.

Дополнительные сведения см. в разделе "Смещения привязки параметров".

Задание этого атрибута инструкции задает поле SQL_DESC_BIND_OFFSET_PTR в заголовке APD.
SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) Значение SQLULEN, указывающее ориентацию привязки, используемую для динамических параметров.

Это поле имеет значение SQL_PARAM_BIND_BY_COLUMN (по умолчанию), чтобы выбрать привязку по столбцам.

Чтобы выбрать привязку по строкам, это поле имеет длину структуры или экземпляр буфера, который будет привязан к набору динамических параметров. Эта длина должна содержать пространство для всех связанных параметров и всех заполнения структуры или буфера, чтобы гарантировать, что при добавочном адресе привязанного параметра указанной длины результат указывает на начало одного и того же параметра в следующем наборе параметров. При использовании оператора sizeof в ANSI C это поведение гарантируется.

Дополнительные сведения см. в разделе "Массивы привязки параметров".

Задание этого атрибута инструкции задает поле SQL_DESC_ BIND_TYPE в заголовке APD.
SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) Значение SQLUSMALLINT *, указывающее на массив значений SQLUSMALLINT, используемых для пропуска параметра во время выполнения инструкции SQL. Каждое значение имеет значение SQL_PARAM_PROCEED (для выполнения параметра) или SQL_PARAM_IGNORE (для пропуска параметра).

Набор параметров можно игнорировать во время обработки, задав значение состояния в массиве, на которое указывает SQL_DESC_ARRAY_STATUS_PTR в APD SQL_PARAM_IGNORE. Набор параметров обрабатывается, если для его значения состояния задано значение SQL_PARAM_PROCEED или если элементы в массиве не заданы.

Этот атрибут инструкции можно задать для указателя NULL, в этом случае драйвер не возвращает значения состояния параметра. Этот атрибут можно задать в любое время, но новое значение не используется до следующего вызова SQLExecDirect или SQLExecute .

Этот атрибут игнорируется при отсутствии привязанного параметра.

Дополнительные сведения см. в разделе "Использование массивов параметров".

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_STATUS_PTR в заголовке APD.
SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) Значение SQLUSMALLINT * , указывающее на массив значений SQLUSMALLINT, содержащих сведения о состоянии для каждой строки значений параметров после вызова SQLExecute или SQLExecDirect. Это поле требуется только в том случае, если PARAMSET_SIZE больше 1.

Значения состояния могут содержать следующие значения:

SQL_PARAM_SUCCESS. Инструкция SQL успешно выполнена для этого набора параметров.

SQL_PARAM_SUCCESS_WITH_INFO: инструкция SQL успешно выполнена для этого набора параметров; Однако сведения о предупреждении доступны в структуре данных диагностики.

SQL_PARAM_ERROR. Произошла ошибка при обработке этого набора параметров. Дополнительные сведения об ошибках доступны в структуре данных диагностики.

SQL_PARAM_UNUSED: этот набор параметров не использовался, возможно, из-за того, что некоторый предыдущий набор параметров вызвал ошибку, прерванную дальнейшую обработку или так как SQL_PARAM_IGNORE был задан для этого набора параметров в массиве, заданном SQL_ATTR_PARAM_OPERATION_PTR.

SQL_PARAM_DIAG_UNAVAILABLE. Драйвер обрабатывает массивы параметров как монолитную единицу и поэтому не создает этот уровень сведений об ошибке.

Этот атрибут инструкции можно задать для указателя NULL, в этом случае драйвер не возвращает значения состояния параметра. Этот атрибут можно задать в любое время, но новое значение не используется до следующего вызова SQLExecute или SQLExecDirect . Обратите внимание, что установка этого атрибута может повлиять на поведение выходного параметра, реализованного драйвером.

Дополнительные сведения см. в разделе "Использование массивов параметров".

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_STATUS_PTR в заголовке IPD.
SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) Поле записи SQLULEN * , указывающее на буфер, в котором возвращается количество наборов обработанных параметров, включая наборы ошибок. Число не будет возвращено, если это пустой указатель.

Задание этого атрибута инструкции задает поле SQL_DESC_ROWS_PROCESSED_PTR в заголовке IPD.

Если вызов SQLExecDirect или SQLExecute , заполняющий буфер, на который указывает этот атрибут, не возвращает SQL_SUCCESS или SQL_SUCCESS_WITH_INFO, содержимое буфера не определено.

Дополнительные сведения см. в разделе "Использование массивов параметров".
SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) Значение SQLULEN, указывающее количество значений для каждого параметра. Если SQL_ATTR_PARAMSET_SIZE больше 1, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR точки APD на массивы. Кратность каждого массива равна значению этого поля.

Этот атрибут игнорируется при отсутствии привязанного параметра.

Дополнительные сведения см. в разделе "Использование массивов параметров".

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_SIZE в заголовке APD.
SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) Значение SQLULEN, соответствующее количеству секунд, ожидающим выполнения инструкции SQL перед возвращением в приложение. Если Значение ValuePtr равно 0 (по умолчанию), время ожидания отсутствует.

Если указанное время ожидания превышает максимальное время ожидания в источнике данных или меньше минимального времени ожидания, SQLSetStmtAttr заменяет это значение и возвращает значение SQLSTATE 01S02 (значение параметра изменено).

Обратите внимание, что приложению не нужно вызывать SQLCloseCursor , чтобы повторно использовать инструкцию, если истекло время ожидания инструкции SELECT .

Время ожидания запроса, заданное в этом атрибуте инструкции, допустимо как в синхронном, так и в асинхронном режиме.
SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) Значение SQLULEN:

SQL_RD_ON = SQLFetchScroll и, в ODBC 3.x, SQLFetch извлекает данные после того, как он помещает курсор в указанное расположение. Это значение по умолчанию.

SQL_RD_OFF = SQLFetchScroll и в ODBC 3.x SQLFetch не извлекают данные после того, как он помещает курсор.

Задав SQL_RETRIEVE_DATA значение SQL_RD_OFF, приложение может убедиться, что строка существует или получить закладку для строки, не вызывая затраты на получение строк. Дополнительные сведения см. в разделе " Прокрутка и извлечение строк".

Значение этого атрибута можно задать на открытом курсоре; однако параметр может не входить в силу немедленно, в этом случае драйвер вернет SQLSTATE 01S02 (значение параметра изменено) и сбросит атрибут в исходное значение.
SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) Значение SQLULEN, указывающее количество строк, возвращаемых каждым вызовом SQLFetch или SQLFetchScroll. Это также количество строк в массиве закладок, используемого в операции массовой закладки в SQLBulkOperations. Значение по умолчанию равно 1.

Если указанный размер набора строк превышает максимальный размер набора строк, поддерживаемый источником данных, драйвер заменяет это значение и возвращает значение SQLSTATE 01S02 (значение параметра изменено).

Дополнительные сведения см. в разделе "Размер набора строк".

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_SIZE в заголовке ARD.
SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) Значение SQLULEN *, указывающее на смещение, добавленное к указателям на изменение привязки данных столбца. Если это поле не равно NULL, драйвер разыменовывает указатель, добавляет деконференцию значения к каждому из отложенных полей в записи дескриптора (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR) и использует новые значения указателя при привязке. По умолчанию для него задано значение NULL.

Задание этого атрибута инструкции задает поле SQL_DESC_BIND_OFFSET_PTR в заголовке ARD.
SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) Значение SQLULEN, которое задает ориентацию привязки, которая будет использоваться при вызове SQLFetch или SQLFetchScroll в связанной инструкции. Привязка со столбцами выбирается путем задания значения SQL_BIND_BY_COLUMN. Привязка по строкам выбирается путем задания значения длины структуры или экземпляра буфера, в который будут привязаны столбцы результатов.

Если указана длина, она должна содержать пространство для всех привязанных столбцов и любое заполнение структуры или буфера, чтобы обеспечить увеличение адреса привязанного столбца с указанной длиной, результат будет указывать на начало одного столбца в следующей строке. При использовании оператора sizeof со структурами или объединениями в ANSI C это поведение гарантируется.

Привязка по умолчанию — это ориентация привязки по умолчанию для SQLFetch и SQLFetchScroll.

Дополнительные сведения см. в разделе "Привязка столбцов для использования с блок-курсорами".

Задание этого атрибута инструкции задает поле SQL_DESC_BIND_TYPE в заголовке ARD.
SQL_ATTR_ROW_NUMBER (ODBC 2.0) Значение SQLULEN, которое является числом текущей строки во всем результирующем наборе. Если не удается определить число текущей строки или нет текущей строки, драйвер возвращает значение 0.

Этот атрибут можно получить путем вызова SQLGetStmtAttr, но не задать путем вызова SQLSetStmtAttr.
SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) Значение SQLUSMALLINT * , указывающее на массив значений SQLUSMALLINT, используемых для пропуска строки во время массовой операции с помощью SQLSetPos. Каждое значение имеет значение SQL_ROW_PROCEED (для включения строки в массовую операцию) или SQL_ROW_IGNORE (для исключения строки из массовой операции). (Строки нельзя игнорировать с помощью этого массива во время вызовов SQLBulkOperations.)

Этот атрибут инструкции можно задать для указателя NULL, в этом случае драйвер не возвращает значения состояния строки. Этот атрибут можно задать в любое время, но новое значение не используется до следующего вызова SQLSetPos .

Дополнительные сведения см. в статье Об обновлении строк в наборе строк с помощью SQLSetPos и удалении строк в наборе строк с помощью SQLSetPos.

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_STATUS_PTR в ARD.
SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) Значение SQLUSMALLINT * , указывающее на массив значений SQLUSMALLINT, содержащих значения состояния строки после вызова SQLFetch или SQLFetchScroll. Массив содержит столько элементов, сколько строк в наборе строк.

Этот атрибут инструкции можно задать для указателя NULL, в этом случае драйвер не возвращает значения состояния строки. Этот атрибут можно задать в любой момент, но новое значение не используется до следующего вызова SQLBulkOperations, SQLFetch, SQLFetchScroll или SQLSetPos.

Дополнительные сведения см. в разделе "Количество строк" и "Состояние".

Задание этого атрибута инструкции задает поле SQL_DESC_ARRAY_STATUS_PTR в заголовке IRD.

Этот атрибут сопоставляется драйвером ODBC 2.x с массивом rgbRowStatus в вызове SQLExtendedFetch.
SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) Значение SQLULEN *, указывающее на буфер, в котором возвращается число строк, извлекаемых после вызова SQLFetch или SQLFetchScroll; количество строк, затронутых массовой операцией, выполняемой вызовом SQLSetPos с аргументом операции SQL_REFRESH; или число строк, затронутых массовой операцией SQLBulkOperations. Это число включает строки ошибок.

Дополнительные сведения см. в разделе "Количество строк" и "Состояние".

Задание этого атрибута инструкции задает поле SQL_DESC_ROWS_PROCESSED_PTR в заголовке IRD.

Если вызов SQLFetch или SQLFetchScroll , который заполняет буфер, на который указывает этот атрибут, не возвращает SQL_SUCCESS или SQL_SUCCESS_WITH_INFO, содержимое буфера не определено.
SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) Значение SQLULEN, указывающее, влияют ли драйверы, которые имитируют размещенные инструкции обновления и удаления, что такие инструкции влияют только на одну строку.

Для имитации позиционированных инструкций обновления и удаления большинство драйверов создают инструкцию SEARCH UPDATE или DELETE , содержащую предложение WHERE , указывающее значение каждого столбца в текущей строке. Если эти столбцы не составляют уникальный ключ, такая инструкция может повлиять на несколько строк.

Чтобы гарантировать, что такие инструкции влияют только на одну строку, драйвер определяет столбцы в уникальном ключе и добавляет эти столбцы в результирующий набор. Если приложение гарантирует, что столбцы в результирующем наборе составляют уникальный ключ, драйвер не требует этого. Это может сократить время выполнения.

SQL_SC_NON_UNIQUE = драйвер не гарантирует, что имитированные операторы обновления или удаления будут влиять только на одну строку; это ответственность за это приложение. Если инструкция влияет на несколько строк, SQLExecute, SQLExecDirect или SQLSetPos возвращает SQLSTATE 01001 (конфликт операции курсора).

SQL_SC_TRY_UNIQUE = драйвер пытается гарантировать, что имитированные операторы обновления или удаления влияют только на одну строку. Драйвер всегда выполняет такие инструкции, даже если они могут повлиять на несколько строк, например при отсутствии уникального ключа. Если инструкция влияет на несколько строк, SQLExecute, SQLExecDirect или SQLSetPos возвращает SQLSTATE 01001 (конфликт операции курсора).

SQL_SC_UNIQUE = Драйвер гарантирует, что имитированные операторы обновления или удаления влияют только на одну строку. Если драйвер не может гарантировать это для данной инструкции, SQLExecDirect или SQLPrepare возвращает ошибку.

Если источник данных предоставляет встроенную поддержку SQL для позиционированных инструкций обновления и удаления, а драйвер не имитирует курсоры, SQL_SUCCESS возвращается при запросе SQL_SC_UNIQUE для SQL_SIMULATE_CURSOR. SQL_SUCCESS_WITH_INFO возвращается, если запрашивается SQL_SC_TRY_UNIQUE или SQL_SC_NON_UNIQUE. Если источник данных предоставляет уровень поддержки SQL_SC_TRY_UNIQUE и драйвер не поддерживает, возвращается SQL_SUCCESS для SQL_SC_TRY_UNIQUE и возвращается SQL_SUCCESS_WITH_INFO для SQL_SC_NON_UNIQUE.

Если указанный тип имитации курсора не поддерживается источником данных, драйвер заменяет другой тип имитации и возвращает значение SQLSTATE 01S02 (значение параметра изменено). Для SQL_SC_UNIQUE драйвер заменяет SQL_SC_TRY_UNIQUE или SQL_SC_NON_UNIQUE. Для SQL_SC_TRY_UNIQUE драйвер заменяет SQL_SC_NON_UNIQUE.

Значение по умолчанию — SQL_SC_UNIQUE.

Дополнительные сведения см. в разделе "Имитация позиционированного обновления и удаления инструкций".
SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) Значение SQLULEN, указывающее, будет ли приложение использовать закладки с курсором:

SQL_UB_OFF = Off (по умолчанию)

SQL_UB_VARIABLE = приложение будет использовать закладки с курсором, и драйвер предоставит закладки переменной длины, если они поддерживаются. SQL_UB_FIXED не рекомендуется использовать в ODBC 3.x. Приложения ODBC 3.x всегда должны использовать закладки переменной длины, даже при работе с драйверами ODBC 2.x (которые поддерживают только 4-байтовые закладки фиксированной длины). Это связано с тем, что закладка фиксированной длины — это просто особый случай закладки переменной длины. При работе с драйвером ODBC 2.x диспетчер драйверов сопоставляет SQL_UB_VARIABLE с SQL_UB_FIXED.

Чтобы использовать закладки с курсором, приложение должно указать этот атрибут со значением SQL_UB_VARIABLE перед открытием курсора.

Дополнительные сведения см. в разделе "Получение закладок".

[1] Эти функции можно вызывать асинхронно, только если дескриптор реализации является дескриптором реализации, а не дескриптором приложения.

См. привязку column-wise и привязку row-wise.

Сведения Раздел
Отмена обработки инструкций Функция SQLCancel
Возврат параметра атрибута подключения Функция SQLGetConnectAttr
Возврат параметра атрибута инструкции Функция SQLGetStmtAttr
Настройка атрибута подключения Функция SQLSetConnectAttr
Задание одного поля дескриптора Функция SQLSetDescField

См. также

Справочник по API ODBC
Файлы заголовков ODBC