Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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);