Compartir vía


Actualizar datos con SQLBulkOperations

Las aplicaciones pueden realizar operaciones masivas de actualización, eliminación, recuperación o inserción en la tabla subyacente del origen de datos con una llamada a SQLBulkOperations. Llamar a SQLBulkOperations es una alternativa conveniente para construir y ejecutar una instrucción SQL. Permite que un controlador ODBC admita actualizaciones posicionadas incluso cuando el origen de datos no admite instrucciones SQL posicionadas. Forma parte del paradigma de lograr el acceso completo a la base de datos mediante llamadas de función.

SQLBulkOperations funciona en el conjunto de filas actual y solo se puede usar después de una llamada a SQLFetch o SQLFetchScroll. La aplicación especifica las filas que se van a actualizar, eliminar o actualizar almacenando en caché sus marcadores. El controlador recupera los nuevos datos de las filas que se van a actualizar o los nuevos datos que se van a insertar en la tabla subyacente, desde los búferes del conjunto de filas.

El tamaño del conjunto de filas a utilizar por SQLBulkOperations se establece mediante una llamada a SQLSetStmtAttr con un argumento Attribute de SQL_ATTR_ROW_ARRAY_SIZE. A diferencia de SQLSetPos, que usa un nuevo tamaño de conjunto de filas solo después de una llamada a SQLFetch o SQLFetchScroll, SQLBulkOperations usa el nuevo tamaño de conjunto de filas después de la llamada a SQLSetStmtAttr.

Dado que la mayoría de la interacción con las bases de datos relacionales se realiza a través de SQL, SQLBulkOperations no es ampliamente compatible. Sin embargo, un controlador puede emularlo fácilmente mediante la construcción y ejecución de una instrucción UPDATE, DELETE o INSERT.

Para determinar qué operaciones admite SQLBulkOperation, una aplicación llama a SQLGetInfo con la opción de información SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 o SQL_STATIC_CURSOR_ATTRIBUTES1 (en función del tipo del cursor).

Esta sección contiene los temas siguientes.