Partage via


SQLSetScrollOptions, mappage

Lorsqu’une application appelle SQLSetScrollOptions via un pilote ODBC 3.x et que le pilote ne prend pas en charge SQLSetScrollOptions, l’appel à

SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)  

se traduit comme suit :

  • Un appel à

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

    avec l’argument InfoType défini sur l’une des valeurs du tableau suivant, en fonction de la valeur de l’argument KeysetSize dans SQLSetScrollOptions.

    KeysetSize, argument Argument InfoType
    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
    Valeur supérieure à l’argument RowsetSize SQL_KEYSET_CURSOR_ATTRIBUTES2

    Si la valeur de l’argument KeysetSize n’est pas répertoriée dans le tableau précédent, l’appel à SQLSetScrollOptions retourne SQLSTATE S1107 (Valeur de ligne hors plage) et aucune des étapes suivantes n’est effectuée.

    Le Gestionnaire de pilotes vérifie ensuite si le bit approprié est défini dans la valeur *InfoValuePtr retournée par l’appel à SQLGetInfo, en fonction de la valeur de l’argument Concurrency dans SQLSetScrollOptions.

    Argument d’accès concurrentiel Paramètre InfoType
    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

    Si l’argument Concurrency ne fait pas partie des valeurs de la table précédente, l’appel à SQLSetScrollOptions retourne SQLSTATE S1108 (option d’accès concurrentiel hors plage) et aucune des étapes suivantes n’est effectuée. Si le bit approprié (comme indiqué dans le tableau précédent) n’est pas défini dans *InfoValuePtr sur l’une des valeurs correspondant à l’argument Concurrency , l’appel à SQLSetScrollOptions retourne SQLSTATE S1C00 (Pilote non compatible) et aucune des étapes suivantes n’est effectuée.

  • Un appel à

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)  
    

    avec *ValuePtr défini sur l’une des valeurs du tableau suivant, en fonction de la valeur de l’argument KeysetSize dans SQLSetScrollOptions.

    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
    Valeur supérieure à l’argument RowsetSize SQL_CURSOR_KEYSET_DRIVEN
  • Un appel à

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)  
    

    avec *ValuePtr défini sur l’argument Concurrency dans SQLSetScrollOptions.

  • Si l’argument KeysetSize dans l’appel à SQLSetScrollOptions est positif, un appel à

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)  
    

    avec *ValuePtr défini sur l’argument KeysetSize dans SQLSetScrollOptions.

  • Un appel à

    SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)  
    

    avec *ValuePtr défini sur l’argument RowsetSize dans SQLSetScrollOptions.

    Notes

    Lorsque le Gestionnaire de pilotes mappe SQLSetScrollOptions pour une application qui fonctionne avec un pilote ODBC 3.x qui ne prend pas en charge SQLSetScrollOptions, le Gestionnaire de pilotes définit l’option d’instruction SQL_ROWSET_SIZE, et non l’attribut d’instruction SQL_ATTR_ROW_ARRAY_SIZE, sur l’argument RowsetSize dans SQLSetScrollOption. Par conséquent, SQLSetScrollOptions ne peut pas être utilisé par une application lors de l’extraction de plusieurs lignes par un appel à SQLFetch ou SQLFetchScroll. Il peut être utilisé uniquement lors de l’extraction de plusieurs lignes par un appel à SQLExtendedFetch.