Compartir por


Asignación de SQLSetStmtOption

Cuando una aplicación llama a SQLSetStmtOption a través de un controlador ODBC 3.x , la llamada a

SQLSetStmtOption(StatementHandle, fOption, vParam)  

dará como resultado lo siguiente:

  • Si fOption indica un atributo de instrucción definido por ODBC que es una cadena, el Administrador de controladores llama a

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, SQL_NTS)  
    
  • Si fOption indica un atributo de instrucción definido por ODBC que devuelve un valor entero de 32 bits, el Administrador de controladores llama a .

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, 0)  
    
  • Si fOption indica un atributo de instrucción definido por el controlador, el Administrador de controladores llama a .

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, BufferLength)  
    

En los tres casos anteriores, el argumento StatementHandle se establece en el valor de hstmt, el argumento Attribute se establece en el valor de fOption y el argumento ValuePtr se establece en el valor como vParam.

Dado que el Administrador de controladores no sabe si el atributo de instrucción definido por el controlador necesita un valor entero de cadena o de 32 bits, debe pasar un valor válido para el argumento StringLength de SQLSetStmtAttr. Si el controlador ha definido una semántica especial para los atributos de instrucción definidos por el controlador y debe llamarse mediante SQLSetStmtOption, debe admitir SQLSetStmtOption.

Si una aplicación llama a SQLSetStmtOption para establecer una opción de instrucción específica del controlador en un controlador ODBC 3.x y la opción se definió en una versión ODBC 2.x del controlador, se debe definir una nueva constante de manifiesto para la opción en el controlador ODBC 3.x . Si la constante de manifiesto anterior se usa en la llamada a SQLSetStmtOption, el Administrador de controladores llamará a SQLSetStmtAttr con el argumento StringLength establecido en 0.

Cuando una aplicación llama a SQLSetStmtAttr para establecer SQL_ATTR_USE_BOOKMARKS en SQL_UB_ON en un controlador ODBC 3.x , el atributo de instrucción SQL_ATTR_USE_BOOKMARKS se establece en SQL_UB_FIXED. SQL_UB_ON es la misma constante que SQL_UB_FIXED. El Administrador de controladores pasa SQL_UB_FIXED al controlador. SQL_UB_FIXED ha quedado en desuso en ODBC 3.x, pero un controlador ODBC 3.x debe implementarlo para trabajar con aplicaciones ODBC 2.x que usan marcadores de longitud fija.

Para un controlador ODBC 3.x , el Administrador de controladores ya no comprueba si Option está entre SQL_STMT_OPT_MIN y SQL_STMT_OPT_MAX, o es mayor que SQL_CONNECT_OPT_DRVR_START.