Atualizar dados com SQLBulkOperations

Os aplicativos podem executar operações de atualização, exclusão, fetch ou inserção em massa na tabela subjacente na fonte de dados com uma chamada para SQLBulkOperations. Chamar SQLBulkOperations é uma alternativa conveniente para construir e executar uma instrução SQL. Isso permite que um driver ODBC dê suporte a atualizações posicionadas mesmo quando a fonte de dados não dá suporte a instruções SQL posicionadas. Faz parte do paradigma de alcançar acesso total ao banco de dados por meio de chamadas de função.

SQLBulkOperations opera no conjunto de linhas atual e só pode ser usado após uma chamada para SQLFetch ou SQLFetchScroll. O aplicativo especifica as linhas a serem atualizadas, excluídas ou renovadas armazenando seus marcadores em cache. O driver recupera os novos dados para as linhas a serem atualizadas, ou os novos dados a serem inseridos na tabela subjacente, dos buffers do conjunto de linhas.

O tamanho do conjunto de linhas que SQLBulkOperations deve usar é definido uma chamada para SQLSetStmtAttr com um argumento Attribute de SQL_ATTR_ROW_ARRAY_SIZE. Ao contrário de SQLSetPos, que usa um novo tamanho de conjunto de linhas somente após uma chamada para SQLFetch ou SQLFetchScroll, SQLBulkOperations usa o novo tamanho de conjunto de linhas após a chamada para SQLSetStmtAttr.

Como a maior parte da interação com bancos de dados relacionais é feita por meio de SQL, não há amplo suporte para SQLBulkOperations. Porém, um driver pode emulá-lo facilmente construindo e executando uma instrução UPDATE, DELETE ou INSERT.

Para determinar quais operações são compatíveis com SQLBulkOperation, um aplicativo chama SQLGetInfo com a opção de informações de SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 ou SQL_STATIC_CURSOR_ATTRIBUTES1 (dependendo do tipo do cursor).

Esta seção contém os tópicos a seguir.