Partage via


Taille de l'ensemble de lignes d'un curseur

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

Les curseurs ODBC peuvent extraire plusieurs lignes à la fois. Ils peuvent récupérer plusieurs lignes dans chaque appel à SQLFetch ou SQLFetchScroll. Lorsque vous travaillez avec une base de données client/serveur telle que Microsoft SQL Server, il est plus efficace d’extraire plusieurs lignes à la fois. Le nombre de lignes retournées sur une extraction est appelé la taille de l’ensemble de lignes et est spécifié à l’aide de l’SQL_ATTR_ROW_ARRAY_SIZE de SQLSetStmtAttr.

SQLUINTEGER uwRowsize;  
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);  

Les curseurs dont la taille de l'ensemble de lignes est supérieure à 1 sont appelés « curseurs de bloc ».

Deux options s'offrent à vous pour lier des colonnes de jeu de résultats pour des curseurs de bloc :

  • Liaison selon les colonnes

    Chaque colonne est liée à un tableau de variables. Chaque tableau possède un nombre d'éléments égal à la taille de l'ensemble de lignes.

  • Liaison selon les lignes

    Un tableau est construit à l'aide de structures qui contiennent les données et d'indicateurs pour toutes les colonnes d'une ligne. Le tableau possède un nombre de structures égal à la taille de l'ensemble de lignes.

Lorsque la liaison en colonnes ou en ligne est utilisée, chaque appel à SQLFetch ou SQLFetchScroll remplit les tableaux liés avec des données de l’ensemble de lignes récupéré.

SQLGetData peut également être utilisé pour récupérer des données de colonne à partir d’un curseur de bloc. Étant donné que SQLGetData fonctionne une ligne à la fois, SQLSetPos doit être appelé pour définir une ligne spécifique dans l’ensemble de lignes comme ligne active avant d’appeler SQLGetData.

Le pilote ODBC SQL Server Native Client offre une optimisation à l’aide d’ensembles de lignes pour récupérer rapidement un jeu de résultats entier. Pour utiliser cette optimisation, définissez les attributs de curseur sur leurs valeurs par défaut (taille d’ensemble de lignes en lecture seule, en lecture seule = 1) au moment où SQLExecDirect ou SQLExecute est appelé. Le pilote ODBC SQL Server Native Client configure un jeu de résultats par défaut. Cette approche est plus efficace que les curseurs côté serveur lors du transfert de résultats au client sans défilement. Après avoir exécuté l'instruction, augmentez la taille de l'ensemble de lignes et utilisez la liaison selon les colonnes ou la liaison selon les lignes. Cela permet à SQL Server d’utiliser un jeu de résultats par défaut pour envoyer efficacement des lignes de résultat au client, tandis que le pilote ODBC SQL Server Native Client extrait en permanence les lignes des mémoires tampons réseau sur le client.

Voir aussi

Propriétés de curseur