Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Когда приложение вызывает SQLSetScrollOptions через драйвер ODBC 3.x и драйвер не поддерживает SQLSetScrollOptions, вызов вызывается
SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)
Результат будет следующим образом:
Вызов
SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)Аргумент InfoType имеет одно из значений в следующей таблице в зависимости от значения аргумента KeysetSize в SQLSetScrollOptions.
Аргумент KeysetSize Аргумент InfoType SQL_SCROLL_FORWARD_ONLY SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 SQL_SCROLL_STATIC SQL_STATIC_CURSOR_ATTRIBUTES2 SQL_SCROLL_KEYSET_DRIVEN SQL_KEYSET_CURSOR_ATTRIBUTES2 SQL_SCROLL_DYNAMIC SQL_DYNAMIC_CURSOR_ATTRIBUTES2 Значение больше аргумента RowsetSize SQL_KEYSET_CURSOR_ATTRIBUTES2 Если значение аргумента KeysetSize не указано в предыдущей таблице, вызов SQLSetScrollOptions возвращает SQLSTATE S1107 (значение строки вне диапазона), и ни один из следующих шагов не выполняется.
Затем диспетчер драйверов проверяет, задан ли соответствующий бит в значении *InfoValuePtr , возвращаемом вызовом SQLGetInfo, в соответствии со значением аргумента параллелизма в SQLSetScrollOptions.
Аргумент параллелизма Параметр InfoType SQL_CONCUR_READ_ONLY SQL_CA2_READ_ONLY_CONCURRENCY SQL_CONCUR_LOCK SQL_CA2_LOCK_CONCURRENCY SQL_CONCUR_ROWVER SQL_CA2_ROWVER_CONCURRENCY SQL_CONCUR_VALUES SQL_CA2_VALUES_CONCURRENCY Если аргумент параллелизма не является одним из значений в предыдущей таблице, вызов SQLSetScrollOptions возвращает SQLSTATE S1108 (параметр параллелизма вне диапазона) и ни один из следующих шагов не выполняется. Если соответствующий бит (как указано в предыдущей таблице) не задан в *InfoValuePtr в качестве одного из значений, соответствующих аргументу параллелизма , вызов SQLSetScrollOptions возвращает SQLSTATE S1C00 (драйвер не способен) и ни один из следующих шагов не выполняется.
Вызов
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)значение *ValuePtr имеет одно из значений в следующей таблице в соответствии со значением аргумента KeysetSize в SQLSetScrollOptions.
Аргумент KeysetSize *ValuePtr SQL_SCROLL_FORWARD_ONLY SQL_CURSOR_FORWARD_ONLY SQL_SCROLL_STATIC SQL_CURSOR_STATIC SQL_SCROLL_KEYSET_DRIVEN SQL_CURSOR_KEYSET_DRIVEN SQL_SCROLL_DYNAMIC SQL_CURSOR_DYNAMIC Значение больше аргумента RowsetSize SQL_CURSOR_KEYSET_DRIVEN Вызов
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)значение *ValuePtr имеет аргумент параллелизма в SQLSetScrollOptions.
Если аргумент KeysetSize в вызове SQLSetScrollOptions положительный, вызов
SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)значение *ValuePtr имеет аргумент KeysetSize в SQLSetScrollOptions.
Вызов
SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)значение *ValuePtr имеет аргумент RowsetSize в SQLSetScrollOptions.
Заметка
Если диспетчер драйверов сопоставляет SQLSetScrollOptions для приложения, работающего с драйвером ODBC 3.x , который не поддерживает SQLSetScrollOptions, диспетчер драйверов задает параметр инструкции SQL_ROWSET_SIZE, а не атрибут инструкции SQL_ATTR_ROW_ARRAY_SIZE, аргумент RowsetSize в SQLSetScrollOption. В результате SQLSetScrollOptions нельзя использовать приложением при получении нескольких строк вызовом SQLFetch или SQLFetchScroll. Его можно использовать только при получении нескольких строк вызовом SQLExtendedFetch.