使用 SQLBulkOperations 提取行

通过调用 SQLBulkOperations ,可以使用书签将数据重新转换为行集。要提取的行由绑定书签列中的书签标识。 不会提取值为 SQL_COLUMN_IGNORE 的列。

若要使用 SQLBulkOperations 执行大容量提取,应用程序执行以下作:

  1. 检索和缓存要更新的所有行的书签。 如果使用多个书签和列式绑定,则书签存储在数组中;如果使用多个书签,并且使用行顺序绑定,则书签存储在行结构数组中。

  2. 将 SQL_ATTR_ROW_ARRAY_SIZE 语句属性设置为要提取的行数,并将包含书签值的缓冲区或书签数组绑定到第 0 列。

  3. 根据需要设置每个列的长度/指示器缓冲区中的值。 这是绑定到字符串缓冲区的列的字节长度或SQL_NTS,绑定到二进制缓冲区的列的字节长度,对于需要设置为NULL的任何列,则为SQL_NULL_DATA。 应用程序将那些需要设置为默认值(如果存在)或 NULL(如果不存在)的列的长度/指示器缓冲区的值设置为 SQL_COLUMN_IGNORE。

  4. 调用SQLBulkOperations并将 Operation 参数设置为 SQL_FETCH_BY_BOOKMARK。

应用程序无需使用行操作数组以防止在某些列上执行操作。 应用程序通过仅将这些行的书签复制到绑定的书签数组中,来选择要获取的行。