Partager via


SQLSetDescField et SQLSetDescRec (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 décrit l’utilisation des fonctions SQLSetDescField et SQLSetDescRec dans la bibliothèque de curseurs. Pour obtenir des informations générales sur ces fonctions, consultez Fonction SQLSetDescField et FONCTION SQLSetDescRec.

La bibliothèque de curseurs exécute SQLSetDescField lorsqu’elle est appelée pour retourner la valeur des champs définis pour les colonnes de signet :

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DATETIME_INTERVAL_CODE

SQL_DESC_SCALE

SQL_DESC_PRECISION

SQL_DESC_TYPE

SQL_DESC_NAME

SQL_DESC_UNNAMED

SQL_DESC_NULLABLE

La bibliothèque de curseurs exécute des appels à SQLSetDescRec pour une colonne de signet.

Lors de l’utilisation d’un pilote ODBC 2.x , la bibliothèque de curseurs retourne SQLSTATE HY090 (chaîne ou longueur de mémoire tampon non valide) lorsque SQLSetDescField ou SQLSetDescRec est appelé pour définir le champ SQL_DESC_OCTET_LENGTH pour l’enregistrement de signet d’un ARD sur une valeur non égale à 4. Lors de l’utilisation d’un pilote ODBC 3.x , la bibliothèque de curseurs autorise la mémoire tampon à n’importe quelle taille.

La bibliothèque de curseurs exécute SQLSetDescField lorsqu’elle est appelée pour retourner la valeur du champ SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE ou SQL_DESC_ROW_STATUS_PTR. Ces champs peuvent être retournés pour n’importe quelle ligne, pas seulement pour la ligne de signet.

La bibliothèque de curseurs n’exécute pas SQLSetDescField pour modifier un champ de descripteur autre que les champs mentionnés précédemment. Si une application appelle SQLSetDescField pour définir un autre champ pendant le chargement de la bibliothèque de curseurs, l’appel est passé au pilote.

La bibliothèque de curseurs prend en charge la modification dynamique des champs SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR et SQL_DESC_OCTET_LENGTH_PTR de n’importe quelle ligne d’un descripteur de ligne d’application (après un appel à SQLExtendedFetch, SQLFetch ou SQLFetchScroll). Le champ SQL_DESC_OCTET_LENGTH_PTR peut être remplacé par un pointeur null uniquement pour dissocier la mémoire tampon de longueur d’une colonne.

La bibliothèque de curseurs ne prend pas en charge la modification du champ SQL_DESC_BIND_TYPE dans un APD ou un ARD lorsqu’un curseur est ouvert. Le champ SQL_DESC_BIND_TYPE ne peut être modifié qu’après la fermeture du curseur et avant l’ouverture d’un nouveau curseur. Les seuls champs descripteurs que la bibliothèque de curseurs prend en charge pour modifier lorsqu’un curseur est ouvert sont SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR et SQL_DESC_ROWS_PROCESSED_PTR.

La bibliothèque de curseurs ne prend pas en charge la modification du champ SQL_DESC_COUNT de l’ARD après l’appel de SQLExtendedFetch ou SQLFetchScroll et avant la fermeture du curseur.