SQLSetStmtOption-Zuordnung
Wenn eine Anwendung SQLSetStmtOption über einen ODBC 3.x-Treiber aufruft , wird der Aufruf von
SQLSetStmtOption(StatementHandle, fOption, vParam)
ergibt sich wie folgt:
Wenn fOption ein ODBC-definiertes Anweisungsattribut angibt, das eine Zeichenfolge ist, ruft der Treiber-Manager auf.
SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, SQL_NTS)
Wenn fOption ein ODBC-definiertes Anweisungsattribut angibt, das einen 32-Bit-ganzzahligen Wert zurückgibt, ruft der Treiber-Manager auf.
SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, 0)
Wenn fOption ein vom Treiber definiertes Anweisungsattribut angibt, ruft der Treiber-Manager auf.
SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, BufferLength)
In den vorherigen drei Fällen wird das Argument StatementHandle auf den Wert in hstmt, das Attributargument auf den Wert in fOption und das ValuePtr-Argument auf den Wert als vParam festgelegt.
Da der Treiber-Manager nicht weiß, ob das treiberdefinierte Anweisungsattribut eine Zeichenfolge oder einen ganzzahligen 32-Bit-Wert benötigt, muss er einen gültigen Wert für das StringLength-Argument von SQLSetStmtAttr übergeben. Wenn der Treiber spezielle Semantik für treiberdefinierte Anweisungsattribute definiert hat und mit SQLSetStmtOption aufgerufen werden muss, muss er SQLSetStmtOption unterstützen.
Wenn eine Anwendung SQLSetStmtOption aufruft, um eine treiberspezifische Anweisungsoption in einem ODBC 3.x-Treiber festzulegen, und die Option in einer ODBC 2.x-Version des Treibers definiert wurde, sollte für die Option im ODBC 3.x-Treiber eine neue Manifestkonstante definiert werden. Wenn die alte Manifestkonstante beim Aufruf von SQLSetStmtOption verwendet wird, ruft der Treiber-Manager SQLSetStmtAttr auf, wobei das StringLength-Argument auf 0 festgelegt ist.
Wenn eine Anwendung SQLSetStmtAttr aufruft , um SQL_ATTR_USE_BOOKMARKS auf SQL_UB_ON in einem ODBC 3.x-Treiber festzulegen, wird das Attribut der SQL_ATTR_USE_BOOKMARKS-Anweisung auf SQL_UB_FIXED festgelegt. SQL_UB_ON ist dieselbe Konstante wie SQL_UB_FIXED. Der Treiber-Manager übergibt SQL_UB_FIXED an den Treiber. SQL_UB_FIXED ist in ODBC 3.x veraltet, aber ein ODBC 3.x-Treiber muss es implementieren, um mit ODBC 2.x-Anwendungen zu arbeiten, die Lesezeichen mit fester Länge verwenden.
Bei einem ODBC 3.x-Treiber überprüft der Treiber-Manager nicht mehr, ob Option zwischen SQL_STMT_OPT_MIN und SQL_STMT_OPT_MAX liegt oder größer als SQL_CONNECT_OPT_DRVR_START ist.