Compartir por


Recuperar 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 con filas, 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 que se van a capturar y enlaza el búfer que contiene el valor del marcador, o la matriz de marcadores, en 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 de bytes de los datos o SQL_NTS para las columnas enlazadas a búferes de cadena, la longitud de bytes de los datos de las columnas enlazadas a búferes binarios y SQL_NULL_DATA para que las columnas se establezcan en NULL. La aplicación establece el valor en el búfer de longitud o 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.