Buscar linhas com SQLBulkOperations

É possível efetuar um novo fetch dos dados podem em um conjunto de linhas usando identificadores por uma chamada a SQLBulkOperations. As linhas das quais efetuar fetch são identificadas pelos identificadores em uma coluna de identificadores associada. Não é efetuado fetch de colunas com um valor de SQL_COLUMN_IGNORE.

Para efetuar fetch em massa com SQLBulkOperations, o aplicativo faz o seguinte:

  1. Recupera e armazena em cache os indicadores de todas as linhas a serem atualizadas. Se houver mais de um indicador e a associação por coluna for usada, os indicadores serão armazenados em uma matriz. Se houver mais de um indicador e a associação por linha for usada, os indicadores serão armazenados em uma matriz de estruturas de linha.

  2. Define o atributo da instrução SQL_ATTR_ROW_ARRAY_SIZE para o número de linhas a efetuar fetch e associa o armazenamento em buffer que contém o valor do indicador ou a matriz de indicadores à coluna 0.

  3. Define o valor no buffer de comprimento/indicador de cada coluna conforme o necessário. Esse é o comprimento de byte dos dados ou SQL_NTS para colunas associadas a buffers de cadeia de caracteres, o comprimento de byte dos dados para colunas associadas a buffers binários e SQL_NULL_DATA para todas as colunas a serem definidas como NULL. O aplicativo define o valor no buffer de comprimento/indicador das colunas que devem ser definidas como padrão (se houver) ou NULL (se não existir) como SQL_COLUMN_IGNORE.

  4. Chama SQLBulkOperations com o argumento Operation definido como SQL_FETCH_BY_BOOKMARK.

O aplicativo não precisa usar a matriz de operação de linha para impedir que a operação seja executada em determinadas colunas. O aplicativo seleciona as linhas das quais deseja efetuar fetch copiando apenas os indicadores dessas linhas para a matriz de indicadores associados.