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


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

Когда приложение вызывает SQLGetStmtOption к драйверу ODBC 3.x , который не поддерживает его, вызов

SQLGetStmtOption(hstmt, fOption, pvParam)  

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

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

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

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

    SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, BufferLength, NULL)  
    

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

Для параметров подключения к строке, определяемых ODBC, диспетчер драйверов задает аргумент BufferLength в вызове SQLGetConnectAttr предопределенной максимальной длины (SQL_MAX_OPTION_STRING_LENGTH); для параметра нестрогого подключения БуферLength имеет значение 0.

Параметр инструкции SQL_GET_BOOKMARK устарел в ODBC 3.x. Чтобы драйвер ODBC 3.x работал с приложениями ODBC 2.x, используюющими SQL_GET_BOOKMARK, он должен поддерживать SQL_GET_BOOKMARK. Чтобы драйвер ODBC 3.x работал с приложениями ODBC 2.x, он должен поддерживать настройку SQL_USE_BOOKMARKS для SQL_UB_ON и предоставлять закладки фиксированной длины. Если драйвер ODBC 3.x поддерживает только закладки с переменной длиной, а не закладки фиксированной длины, он должен возвращать SQLSTATE HYC00 (необязательный компонент не реализован), если приложение ODBC 2.x пытается задать SQL_USE_BOOKMARKS значение SQL_UB_ON.

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