Comportements des curseurs
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
ODBC prend en charge les options ISO pour spécifier le comportement des curseurs en termes de capacité de défilement et de sensibilité. Ces comportements sont spécifiés en définissant les options SQL_ATTR_CURSOR_SCROLLABLE et SQL_ATTR_CURSOR_SENSITIVITY sur un appel à SQLSetStmtAttr. Le pilote ODBC SQL Server Native Client implémente ces options en demandant des curseurs de serveur avec les caractéristiques suivantes.
Paramètres de comportement du curseur | Caractéristiques du curseur côté serveur demandées |
---|---|
SQL_SCROLLABLE et SQL_SENSITIVE | Curseur de jeu de clés et accès concurrentiel optimiste basé sur la version |
SQL_SCROLLABLE et SQL_INSENSITIVE | Curseur statique et concurrence en lecture seule |
SQL_SCROLLABLE et SQL_UNSPECIFIED | Curseur statique et concurrence en lecture seule |
SQL_NONSCROLLABLE et SQL_SENSITIVE | Curseur avant uniquement et accès concurrentiel optimiste basé sur la version |
SQL_NONSCROLLABLE et SQL_INSENSITIVE | Jeu de résultats par défaut (avant uniquement, en lecture seule) |
SQL_NONSCROLLABLE et SQL_UNSPECIFIED | Jeu de résultats par défaut (avant uniquement, en lecture seule) |
L’accès concurrentiel optimiste basé sur la version nécessite une colonne d’horodatage dans la table sous-jacente. Si le contrôle d’accès concurrentiel optimiste basé sur la version est demandé sur une table qui n’a pas de colonne d’horodatage, le serveur utilise la concurrence optimiste basée sur les valeurs.
Capacité de défilement
Lorsque SQL_ATTR_CURSOR_SCROLLABLE est défini sur SQL_SCROLLABLE, le curseur prend en charge toutes les valeurs différentes pour le paramètre FetchOrientation de SQLFetchScroll. Lorsque SQL_ATTR_CURSOR_SCROLLABLE est défini sur SQL_NONSCROLLABLE, le curseur prend uniquement en charge une valeur FetchOrientation de SQL_FETCH_NEXT.
Sensibilité
Quand SQL_ATTR_CURSOR_SENSITIVITY est défini avec la valeur SQL_SENSITIVE, le curseur reflète les modifications des données effectuées par l'utilisateur en cours ou validées par d'autres utilisateurs. Quand SQL_ATTR_CURSOR_SENSITIVITY est défini avec la valeur SQL_INSENSITIVE, le curseur ne reflète pas les modifications des données.