Freigeben über


SQLSetScrollOptions-Zuordnung

Wenn eine Anwendung SQLSetScrollOptions über einen ODBC 3.x-Treiber aufruft und der Treiber SQLSetScrollOptions nicht unterstützt, wird der Aufruf von

SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)  

ergibt sich wie folgt:

  • Ein Aufruf von

    SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)  
    

    wobei das InfoType-Argument abhängig vom Wert des Arguments KeysetSize in SQLSetScrollOptions auf einen der Werte in der folgenden Tabelle festgelegt ist.

    KeysetSize-Argument InfoType-Argument
    SQL_SCROLL_FORWARD_ONLY SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2
    SQL_SCROLL_STATIC SQL_STATIC_CURSOR_ATTRIBUTES2
    SQL_SCROLL_KEYSET_DRIVEN SQL_KEYSET_CURSOR_ATTRIBUTES2
    SQL_SCROLL_DYNAMIC SQL_DYNAMIC_CURSOR_ATTRIBUTES2
    Ein Wert größer als das RowsetSize-Argument SQL_KEYSET_CURSOR_ATTRIBUTES2

    Wenn der Wert des Arguments KeysetSize nicht in der vorherigen Tabelle aufgeführt ist, gibt der Aufruf von SQLSetScrollOptions SQLSTATE S1107 (Zeilenwert außerhalb des Bereichs) zurück, und keiner der folgenden Schritte wird ausgeführt.

    Der Treiber-Manager überprüft dann, ob das entsprechende Bit im Wert *InfoValuePtr festgelegt ist, der vom Aufruf von SQLGetInfo zurückgegeben wird, entsprechend dem Wert des Arguments Concurrency in SQLSetScrollOptions.

    Parallelitätsargument InfoType-Einstellung
    SQL_CONCUR_READ_ONLY SQL_CA2_READ_ONLY_CONCURRENCY
    SQL_CONCUR_LOCK SQL_CA2_LOCK_CONCURRENCY
    SQL_CONCUR_ROWVER SQL_CA2_ROWVER_CONCURRENCY
    SQL_CONCUR_VALUES SQL_CA2_VALUES_CONCURRENCY

    Wenn das Argument Concurrency nicht einer der Werte in der vorherigen Tabelle ist, gibt der Aufruf von SQLSetScrollOptions SQLSTATE S1108 (Parallelitätsoption außerhalb des Bereichs) zurück, und keiner der folgenden Schritte wird ausgeführt. Wenn das entsprechende Bit (wie in der vorherigen Tabelle angegeben) in *InfoValuePtr nicht auf einen der Werte festgelegt ist, die dem Argument Concurrency entsprechen, gibt der Aufruf von SQLSetScrollOptions SQLSTATE S1C00 (Treiber nicht fähig) zurück, und keiner der folgenden Schritte wird ausgeführt.

  • Ein Aufruf von

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)  
    

    wobei *ValuePtr gemäß dem Wert des Arguments KeysetSize in SQLSetScrollOptions auf einen der Werte in der folgenden Tabelle festgelegt ist.

    KeysetSize-Argument *ValuePtr
    SQL_SCROLL_FORWARD_ONLY SQL_CURSOR_FORWARD_ONLY
    SQL_SCROLL_STATIC SQL_CURSOR_STATIC
    SQL_SCROLL_KEYSET_DRIVEN SQL_CURSOR_KEYSET_DRIVEN
    SQL_SCROLL_DYNAMIC SQL_CURSOR_DYNAMIC
    Ein Wert größer als das RowsetSize-Argument SQL_CURSOR_KEYSET_DRIVEN
  • Ein Aufruf von

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)  
    

    wobei *ValuePtr auf das Argument Concurrency in SQLSetScrollOptions festgelegt ist.

  • Wenn das KeysetSize-Argument im Aufruf von SQLSetScrollOptions positiv ist, wird ein Aufruf von

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)  
    

    wenn *ValuePtr auf das KeysetSize-Argument in SQLSetScrollOptions festgelegt ist.

  • Ein Aufruf von

    SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)  
    

    wobei *ValuePtr auf das RowsetSize-Argument in SQLSetScrollOptions festgelegt ist.

    Hinweis

    Wenn der Treiber-Manager SQLSetScrollOptions einer Anwendung zuordnet, die mit einem ODBC 3.x-Treiber arbeitet, der SQLSetScrollOptions nicht unterstützt, legt der Treiber-Manager die Option SQL_ROWSET_SIZE-Anweisung und nicht das SQL_ATTR_ROW_ARRAY_SIZE-Anweisungsattribut dem RowsetSize-Argument in SQLSetScrollOption fest. Daher kann SQLSetScrollOptions nicht von einer Anwendung verwendet werden, wenn mehrere Zeilen durch einen Aufruf von SQLFetch oder SQLFetchScroll abgerufen werden. Es kann nur verwendet werden, wenn mehrere Zeilen durch einen Aufruf von SQLExtendedFetch abgerufen werden.