Définir les options de curseur (ODBC)

Pour définir des options de curseur, appelez SQLSetStmtAttr pour définir ou SQLGetStmtAttr pour obtenir les options d’instruction qui contrôlent le comportement du curseur.

Attribut Spécifie
SQL_ATTR_CURSOR_TYPE Type de curseur piloté par le transfert uniquement, statique, dynamique ou piloté par les jeux de clés
SQL_ATTR_CONCURRENCY Option de contrôle d’accès concurrentiel de lecture seule, verrouillage, optimiste à l’aide d’horodatages ou optimiste à l’aide de valeurs
SQL_ATTR_ROW_ARRAY_SIZE Nombre de lignes récupérées dans chaque extraction
SQL_ATTR_CURSOR_SENSITIVITY Curseur qui n’affiche pas ou n’affiche pas les mises à jour des lignes de curseur effectuées par d’autres connexions
SQL_ATTR_CURSOR_SCROLLABLE Curseur pouvant être fait défiler vers l’avant et vers l’arrière

Les valeurs par défaut pour ces attributs (taille d’ensemble de lignes en lecture seule et en lecture seule de 1) n’utilisent pas de curseurs serveur. Pour utiliser des curseurs serveur, au moins l’un de ces attributs doit être défini sur une valeur autre que la valeur par défaut, et l’instruction exécutée doit être une instruction SELECT unique ou une procédure stockée qui contient une seule instruction SELECT. Lorsque vous utilisez des curseurs de serveur, les instructions SELECT ne peuvent pas utiliser de clauses non prises en charge par les curseurs de serveur : COMPUTE, COMPUTE BY, FOR BROWSE et INTO.

Vous pouvez contrôler le type de curseur utilisé soit en définissant SQL_ATTR_CURSOR_TYPE et SQL_ATTR_CONCURRENCY, soit en définissant SQL_ATTR_CURSOR_SENSITIVITY et SQL_ATTR_CURSOR_SCROLLABLE. Vous ne devez pas combiner les deux méthodes de spécification du comportement du curseur.

Exemple :

L’exemple suivant alloue un handle d’instruction, définit un type de curseur dynamique avec la concurrence optimiste du contrôle de version de ligne, puis exécute un SELECT.

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_DYNAMIC, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CONCURRENCY, SQLPOINTER)SQL_CONCUR_ROWVER, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, SELECT au_lname FROM authors", SQL_NTS);  

Exemple :

L’exemple suivant alloue un handle d’instruction, définit un curseur défilant, sensible, puis exécute un SELECT

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
  
// Set the cursor options and execute the statement.  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SCROLLABLE, SQLPOINTER)SQL_SCROLLABLE, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SENSITIVITY, SQLPOINTER)SQL_INSENSITIVE, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, select au_lname from authors", SQL_NTS);  

Voir aussi

Exécution de rubriques de procédure sur les requêtes (ODBC)