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


Сопоставление SQLSetStmtOption

Когда приложение вызывает SQLSetStmtOption через драйвер ODBC 3.x , вызов вызывается

SQLSetStmtOption(StatementHandle, fOption, vParam)  

Результат будет следующим образом:

  • Если fOption указывает атрибут инструкции ODBC, который является строкой, диспетчер драйверов вызывает

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, SQL_NTS)  
    
  • Если fOption указывает атрибут инструкции ODBC, возвращающий 32-разрядное целое число, диспетчер драйверов вызывает

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, 0)  
    
  • Если fOption указывает атрибут инструкции, определяемый драйвером, диспетчер драйверов вызывает

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, BufferLength)  
    

В предыдущих трех случаях аргумент StatementHandle имеет значение в hstmt, аргумент Атрибута задается значением в fOption, а аргумент ValuePtr имеет значение vParam.

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

Если приложение вызывает SQLSetStmtOption, чтобы задать параметр инструкции для конкретного драйвера в драйвере ODBC 3.x и параметр был определен в версии драйвера ODBC 2.x, новая константа манифеста должна быть определена для параметра в драйвере ODBC 3.x. Если в вызове SQLSetStmtOption используется старая константа манифеста, диспетчер драйверов вызовет SQLSetStmtAttr с аргументом StringLength значение 0.

Когда приложение вызывает SQLSetStmtAttr для задания SQL_ATTR_USE_BOOKMARKS SQL_UB_ON в драйвере ODBC 3.x , атрибут инструкции SQL_ATTR_USE_BOOKMARKS имеет значение SQL_UB_FIXED. SQL_UB_ON является той же константой, что и SQL_UB_FIXED. Диспетчер драйверов передает SQL_UB_FIXED через драйвер. SQL_UB_FIXED не рекомендуется использовать в ODBC 3.x, но драйвер ODBC 3.x должен реализовать его для работы с приложениями ODBC 2.x, используюющими закладки фиксированной длины.

Для драйвера ODBC 3.x диспетчер драйверов больше не проверяет, находится ли параметр между SQL_STMT_OPT_MIN и SQL_STMT_OPT_MAX или больше SQL_CONNECT_OPT_DRVR_START.