Compartilhar via


Mapeamento SQLGetStmtOption

Quando um aplicativo chama SQLGetStmtOption para um driver ODBC 3.x que não dá suporte a ele, a chamada para

SQLGetStmtOption(hstmt, fOption, pvParam)  

resultará da seguinte maneira:

  • Se fOption indicar uma opção de instrução definida pelo ODBC que retorna uma cadeia de caracteres, o Gerenciador de Driver chamará

    SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, BufferLength, NULL)  
    
  • Se fOption indicar uma opção de instrução definida pelo ODBC que retorna um valor inteiro de 32 bits, o Gerenciador de Driver chamará

    SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, 0, NULL)  
    
  • Se fOption indicar uma opção de instrução definida pelo driver, o Gerenciador de Driver chamará

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

Nos três casos anteriores, o argumento StatementHandle é definido como o valor em hstmt, o argumento Attribute é definido como o valor em fOption e o argumento ValuePtr é definido como o mesmo valor que pvParam.

Para opções de conexão de cadeia de caracteres definidas pelo ODBC, o Gerenciador de Driver define o argumento BufferLength na chamada como SQLGetConnectAttr como o comprimento máximo predefinido (SQL_MAX_OPTION_STRING_LENGTH); para uma opção de conexão nãostring, BufferLength é definido como 0.

A opção de instrução SQL_GET_BOOKMARK foi preterida no ODBC 3.x. Para que um driver ODBC 3.x funcione com aplicativos ODBC 2.x que usam SQL_GET_BOOKMARK, ele deve dar suporte a SQL_GET_BOOKMARK. Para que um driver ODBC 3.x funcione com aplicativos ODBC 2.x , ele deve dar suporte à configuração SQL_USE_BOOKMARKS para SQL_UB_ON e deve expor indicadores de comprimento fixo. Se um driver ODBC 3.x der suporte apenas a indicadores de comprimento variável, não a indicadores de comprimento fixo, ele deverá retornar SQLSTATE HYC00 (recurso opcional não implementado) se um aplicativo ODBC 2.x tentar definir SQL_USE_BOOKMARKS como SQL_UB_ON.

Para um driver ODBC 3.x , o Gerenciador de Driver não verifica mais se Option está entre SQL_STMT_OPT_MIN e SQL_STMT_OPT_MAX ou é maior que SQL_CONNECT_OPT_DRVR_START. O driver deve verificar isso.