Partager via


Utiliser des curseurs (ODBC)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Pour utiliser des curseurs

  1. Appelez SQLSetStmtAttr pour définir les attributs de curseur souhaités :

    Définissez les attributs SQL_ATTR_CURSOR_TYPE et SQL_ATTR_CONCURRENCY (option par défaut).

    Or

    Définissez les attributs SQL_CURSOR_SCROLLABLE et SQL_CURSOR_SENSITIVITY.

  2. Appelez SQLSetStmtAttr pour définir la taille de l’ensemble de lignes en utilisant l’attribut SQL_ATTR_ROW_ARRAY_SIZE.

  3. Vous pouvez également appeler SQLSetCursorName pour définir un nom de curseur si des mises à jour positionnées seront effectuées à l’aide de la clause WHERE CURRENT OF.

  4. Exécutez l'instruction SQL.

  5. Vous pouvez également appeler SQLGetCursorName pour obtenir le nom de curseur si des mises à jour positionnées seront effectuées à l’aide de la clause WHERE CURRENT OF et si un nom de curseur n’a pas été fourni avec SQLSetCursorName à l’étape 3.

  6. Appelez SQLNumResultCols pour obtenir le nombre de colonnes (C) dans l’ensemble de lignes.

    Utilisez la liaison selon les colonnes

    - ou -

    Utilisez la liaison selon les lignes.

  7. Extrayez des ensembles de lignes à partir du curseur, comme vous le souhaitez.

  8. Appelez SQLMoreResults pour déterminer si un autre jeu de résultats est disponible.

    • S'il retourne SQL_SUCCESS, un autre jeu de résultats est disponible.

    • S'il retourne SQL_NO_DATA, aucun autre jeu de résultats n'est disponible.

    • S’il retourne SQL_SUCCESS_WITH_INFO ou SQL_ERROR, appelez SQLGetDiagRec pour déterminer si la sortie à partir d’une instruction PRINT ou RAISERROR est disponible.

    Si des paramètres d'instruction liés sont utilisés pour les paramètres de sortie ou la valeur de retour d'une procédure stockée, utilisez les données à présent disponibles dans les mémoires tampons de paramètres liés.

    Quand des paramètres liés sont utilisés, chaque appel à SQLExecute ou à SQLExecDirect aura exécuté l’instruction SQL S fois, où S est le nombre d’éléments présents dans le tableau de paramètres liés. Cela signifie qu'il y aura S jeux de résultats à traiter, où chaque jeu de résultats comprend l'ensemble des jeux de résultats, des paramètres de sortie et des codes de retour habituellement retournés par une exécution unique de l'instruction SQL.

    Notez que lorsqu'un jeu de résultats contient des lignes calculées, chaque ligne calculée est rendue disponible comme un jeu de résultats distinct. Ces jeux de résultats calculés sont intercalés au sein des lignes normales et séparent les lignes normales en plusieurs jeux de résultats.

  9. Vous pouvez également appeler SQLFreeStmt avec SQL_UNBIND pour libérer tous les tampons de colonnes liées éventuels.

  10. Si un autre jeu de résultats est disponible, allez à l'étape 6.

    À l’étape 9, l’appel de SQLMoreResults sur un jeu de résultats partiellement traité efface le reste du jeu de résultats. Une autre méthode pour effacer un jeu de résultats partiellement traité consiste à appeler SQLCloseCursor.

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

Voir aussi

Rubriques de procédures liées à l’utilisation des curseurs (ODBC)