Partager via


Ce que fait le pilote

Le tableau suivant récapitule les fonctions et attributs d’instruction qu’un pilote ODBC 3.x doit implémenter pour les curseurs de bloc et de défilement.

Fonction ou

attribut d'instruction
Commentaires
SQL_ATTR_ROW_STATUS_PTR Définit l’adresse du tableau d’état de ligne rempli par SQLFetch et SQLFetchScroll. Ce tableau est également rempli par SQLSetPos si SQLSetPos est appelé dans l’état d’instruction S6. Si SQLSetPos est appelé dans l’état S7, ce tableau n’est pas rempli, mais le tableau pointé par l’argument RowStatusArray de SQLExtendedFetch est rempli. Pour plus d’informations, consultez Transitions d’instructions dans l’Annexe B : Tables de transition d’état ODBC.
SQL_ATTR_ROWS_FETCHED_PTR Définit l’adresse de la mémoire tampon dans laquelle SQLFetch et SQLFetchScroll retournent le nombre de lignes extraites. Si SQLExtendedFetch est appelé, cette mémoire tampon n’est pas remplie, mais l’argument RowCountPtr pointe vers le nombre de lignes extraites.
SQL_ATTR_ROW_ARRAY_SIZE Définit la taille de l’ensemble de lignes utilisée par SQLFetch et SQLFetchScroll.
SQL_ROWSET_SIZE Définit la taille de l’ensemble de lignes utilisée par SQLExtendedFetch. Les pilotes ODBC 3.x implémentent cela s’ils souhaitent utiliser des applications ODBC 2.x qui appellent SQLExtendedFetch ou SQLSetPos.
SQLBulkOperations Si un pilote ODBC 3.x doit fonctionner avec des applications ODBC 2.x qui utilisent SQLSetPos avec une opération de SQL_ADD, le pilote doit prendre en charge SQLSetPos avec une opération de SQL_ADD en plus de SQLBulkOperations avec une opération de SQL_ADD.
SQLExtendedFetch Retourne l’ensemble de lignes spécifié. Les pilotes ODBC 3.x implémentent cela s’ils souhaitent utiliser des applications ODBC 2.x qui appellent SQLExtendedFetch ou SQLSetPos. Voici les détails de l’implémentation :

- Le pilote récupère la taille de l’ensemble de lignes à partir de la valeur de l’attribut d’instruction SQL_ROWSET_SIZE.
- Le pilote récupère l’adresse du tableau d’état de ligne à partir de l’argument RowStatusArray , et non de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR. L’argument RowStatusArray dans un appel à SQLExtendedFetch ne doit pas être un pointeur Null. (Notez que dans ODBC 3.x, l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR peut être un pointeur Null.)
- Le pilote récupère l’adresse de la mémoire tampon extraite des lignes à partir de l’argument RowCountPtr , et non de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR.
- Le pilote retourne SQLSTATE 01S01 (Erreur dans la ligne) pour indiquer qu’une erreur s’est produite lors de l’extraction des lignes par un appel à SQLExtendedFetch. Un pilote ODBC 3.x doit retourner SQLSTATE 01S01 (Erreur dans la ligne) uniquement lorsque SQLExtendedFetch est appelé, et non quand SQLFetch ou SQLFetchScroll est appelé. Pour préserver la compatibilité descendante, lorsque SQLSTATE 01S01 (Erreur dans la ligne) est retourné par SQLExtendedFetch, le Gestionnaire de pilotes ne trie pas les enregistrements d’état dans la file d’attente d’erreurs conformément aux règles indiquées dans la section « Séquence d’enregistrements d’état » de SQLGetDiagField.
SQLFetch Retourne l’ensemble de lignes suivant. Voici les détails de l’implémentation :

- Le pilote récupère la taille de l’ensemble de lignes à partir de la valeur de l’attribut d’instruction SQL_ATTR_ROW_ARRAY_SIZE.
- Le pilote récupère l’adresse du tableau d’état de ligne à partir de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR.
- Le pilote récupère l’adresse de la mémoire tampon extraite des lignes à partir de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR.
- L’application peut combiner des appels entre SQLFetchScroll et SQLFetch.
- SQLFetch retourne des signets si la colonne 0 est liée.
- SQLFetch peut être appelé pour retourner plusieurs lignes.
- Le pilote ne retourne pas SQLSTATE 01S01 (Erreur dans la ligne) pour indiquer qu’une erreur s’est produite lors de l’extraction des lignes par un appel à SQLFetch.
SQLFetchScroll Retourne l’ensemble de lignes spécifié. Voici les détails de l’implémentation :

- Le pilote récupère la taille de l’ensemble de lignes à partir de l’attribut d’instruction SQL_ATTR_ROW_ARRAY_SIZE.
- Le pilote récupère l’adresse du tableau d’état de ligne à partir de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR.
- Le pilote récupère l’adresse de la mémoire tampon extraite des lignes à partir de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR.
- L’application peut combiner des appels entre SQLFetchScroll et SQLFetch.
- Le pilote ne retourne pas SQLSTATE 01S01 (Erreur dans la ligne) pour indiquer qu’une erreur s’est produite lors de l’extraction des lignes par un appel à SQLFetchScroll.
SQLSetPos Effectue différentes opérations positionnées. Voici les détails de l’implémentation :

- Cela peut être appelé dans les états d’instruction S6 ou S7. Pour plus d’informations, consultez Transitions d’instructions dans l’Annexe B : Tables de transition d’état ODBC.
- Si cela est appelé dans l’état d’instruction S5 ou S6, le pilote récupère la taille de l’ensemble de lignes à partir de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR et l’adresse du tableau d’état de ligne à partir de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR.
- Si cela est appelé dans l’état d’instruction S7, le pilote récupère la taille de l’ensemble de lignes à partir de l’attribut d’instruction SQL_ROWSET_SIZE et l’adresse du tableau d’état de ligne à partir de l’argument RowStatusArray de SQLExtendedFetch.
- Le pilote retourne SQLSTATE 01S01 (Erreur dans la ligne) uniquement pour indiquer qu’une erreur s’est produite lors de l’extraction des lignes par un appel à SQLSetPos pour effectuer une opération en bloc lorsque la fonction est appelée dans l’état S7. Pour préserver la compatibilité descendante, si SQLSTATE 01S01 (Erreur dans la ligne) est retourné par SQLSetPos, le Gestionnaire de pilotes ne trie pas les enregistrements d’état dans la file d’attente d’erreurs conformément aux règles énoncées dans la section « Séquence d’enregistrements d’état » de SQLGetDiagField.
- Si le pilote doit fonctionner avec des applications ODBC 2.x qui appellent SQLSetPos avec un argument Operation de SQL_ADD, le pilote doit prendre en charge SQLSetPos avec un argument Operation de SQL_ADD.