Partager via


SQLSetPos (bibliothèque de curseurs)

Important

Cette fonctionnalité sera supprimée dans une version future de Windows. Évitez d’utiliser cette fonctionnalité dans les nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Microsoft recommande d’utiliser la fonctionnalité de curseur du pilote.

Cette rubrique traite de l’utilisation de la fonction SQLSetPos dans la bibliothèque de curseurs. Pour plus d’informations générales sur SQLSetPos, consultez Fonction SQLSetPos.

La bibliothèque de curseurs prend en charge l’opération SQL_POSITION uniquement pour l’argument Operation dans SQLSetPos. Il prend en charge la valeur SQL_LOCK_NO_CHANGE uniquement pour l’argument LockType .

Si le pilote ne prend pas en charge les opérations en bloc, la bibliothèque de curseurs retourne SQLSTATE HYC00 (Pilote non compatible) lorsque SQLSetPos est appelé avec RowNumber égal à 0. Ce comportement de pilote n’est pas recommandé.

La bibliothèque de curseurs ne prend pas en charge les opérations SQL_UPDATE et SQL_DELETE dans un appel à SQLSetPos. La bibliothèque de curseurs implémente une instruction SQL de mise à jour ou de suppression positionnée en créant une instruction de mise à jour ou de suppression recherchée avec une clause WHERE qui énumère les valeurs stockées dans son cache pour chaque colonne liée. Pour plus d’informations, consultez Traitement des instructions de mise à jour et de suppression positionnées.

Si le pilote ne prend pas en charge les curseurs statiques, une application qui travaille avec la bibliothèque de curseurs doit appeler SQLSetPos uniquement sur un ensemble de lignes extrait par SQLExtendedFetch ou SQLFetchScroll, et non par SQLFetch. La bibliothèque de curseurs implémente SQLExtendedFetch et SQLFetchScroll en effectuant des appels répétés de SQLFetch (avec une taille d’ensemble de lignes de 1) dans le pilote. En revanche, la bibliothèque de curseurs transmet les appels à SQLFetch au pilote. Si SQLSetPos est appelé sur un ensemble de lignes multirows extrait par SQLFetch lorsque le pilote ne prend pas en charge les curseurs statiques, l’appel échoue, car SQLSetPos ne fonctionne pas avec les curseurs avant uniquement. Cela se produit même si une application a correctement appelé SQLSetStmtAttr pour définir SQL_ATTR_CURSOR_TYPE sur SQL_CURSOR_STATIC, ce que la bibliothèque de curseurs prend en charge même si le pilote ne prend pas en charge les curseurs statiques.