Comparteix via


Capturar filas con SQLBulkOperations

Los datos se pueden volver a capturar en un conjunto de filas mediante marcadores mediante una llamada a SQLBulkOperations. Los marcadores identifican las filas que se van a capturar en una columna de marcador enlazado. No se capturan columnas con un valor de SQL_COLUMN_IGNORE.

Para realizar capturas masivas con SQLBulkOperations, la aplicación hace lo siguiente:

  1. Recupera y almacena en caché los marcadores de todas las filas que se van a actualizar. Si hay más de un marcador y se usa el enlace con columnas, los marcadores se almacenan en una matriz; Si hay más de un marcador y se usa el enlace de fila, los marcadores se almacenan en una matriz de estructuras de fila.

  2. Establece el atributo de instrucción SQL_ATTR_ROW_ARRAY_SIZE en el número de filas a recuperar, y enlaza el búfer que contiene el valor del marcador, o la matriz de marcadores, a la columna 0.

  3. Establece el valor en el búfer de longitud o indicador de cada columna según sea necesario. Esta es la longitud en bytes de los datos o SQL_NTS para columnas enlazadas a búferes de cadena, la longitud en bytes de los datos para columnas enlazadas a búferes binarios y SQL_NULL_DATA para columnas que se deben establecer en NULL. La aplicación establece el valor en el búfer de longitud/indicador de las columnas que se van a establecer en su valor predeterminado (si existe uno) o NULL (si no existe) en SQL_COLUMN_IGNORE.

  4. Llama a SQLBulkOperations con el argumento Operation establecido en SQL_FETCH_BY_BOOKMARK.

No es necesario que la aplicación use la matriz de operaciones de fila para evitar que la operación se realice en determinadas columnas. La aplicación selecciona las filas que desea capturar copiando solo los marcadores de esas filas en la matriz de marcadores enlazada.