Partager via


Extraction de lignes avec SQLBulkOperations

Les données peuvent être refétées dans un ensemble de lignes à l’aide de signets par un appel à SQLBulkOperations. Les lignes à extraire sont identifiées par les signets d’une colonne de signet liée. Les colonnes dont la valeur est SQL_COLUMN_IGNORE ne sont pas extraites.

Pour effectuer des extractions en bloc avec SQLBulkOperations, l’application effectue les opérations suivantes :

  1. Récupère et met en cache les signets de toutes les lignes à mettre à jour. S’il existe plusieurs signets et liaisons basées sur des colonnes, les signets sont stockés dans un tableau ; s’il existe plusieurs signets et liaisons en ligne sont utilisés, les signets sont stockés dans un tableau de structures de lignes.

  2. Définit l’attribut d’instruction SQL_ATTR_ROW_ARRAY_SIZE sur le nombre de lignes à extraire et lier la mémoire tampon contenant la valeur de signet, ou le tableau de signets, à la colonne 0.

  3. Définit la valeur dans la mémoire tampon longueur/indicateur de chaque colonne si nécessaire. Il s’agit de la longueur d’octet des données ou des SQL_NTS pour les colonnes liées aux mémoires tampons de chaîne, de la longueur d’octet des données pour les colonnes liées aux mémoires tampons binaires et SQL_NULL_DATA pour toutes les colonnes à définir sur NULL. L’application définit la valeur dans la mémoire tampon de longueur/indicateur de ces colonnes à définir sur leur valeur par défaut (le cas échéant) ou NULL (si ce n’est pas le cas) sur SQL_COLUMN_IGNORE.

  4. Appelle SQLBulkOperations avec l’argument Opération défini sur SQL_FETCH_BY_BOOKMARK.

Il n’est pas nécessaire que l’application utilise le tableau d’opérations de ligne pour empêcher l’exécution de l’opération sur certaines colonnes. L’application sélectionne les lignes qu’elle souhaite extraire en copiant uniquement les signets de ces lignes dans le tableau de signets lié.