IBCPSession::BCPExec (OLE DB)
Executa a operação de cópia em massa.
Sintaxe
HRESULT BCPExec(
DBROWCOUNT *pRowsCopied);
Comentários
O método BCPExec copia dados de um arquivo de usuário para uma tabela de banco de dados ou vice-versa, dependendo do valor do parâmetro eDirection usado com o método IBCPSession::BCPInit.
Antes de chamar BCPExec, chame o método BCPInit com um nome de arquivo de usuário válido. Caso isso não seja feito, será gerado um erro. A única exceção será se uma consulta for usada para uma operação de cópia em massa. Nesse caso, especifique NULL para o nome da tabela no método BCPInit e, depois, especifique a consulta usando a opção BCP_OPTION_HINTS.
O método BCPExec é o único método de cópia em massa que provavelmente permanecerá pendente durante qualquer intervalo de tempo. Ele é, portanto, o único método de cópia em massa que oferece suporte ao modo assíncrono. Para usar o modo assíncrono, defina a propriedade de sessão SSPROP_ASYNCH_BULKCOPY específica do provedor como VARIANT_TRUE antes de chamar o método BCPExec. Essa propriedade está disponível no conjunto de propriedades DBPROPSET_SQLSERVERSESSION. Para testar a conclusão, chame o método BCPExec com os mesmos parâmetros. Se a cópia em massa ainda não estiver concluída, o método BCPExec retornará DB_S_ASYNCHRONOUS. Ele também retornará, no argumento pRowsCopied, uma contagem de status do número de linhas que foram enviadas para o servidor ou recebidas dele. As linhas enviadas para o servidor não serão confirmadas até que o fim de um lote seja atingido.
Argumentos
- pRowsCopied[out]
Um ponteiro para uma DWORD. O método BCPExec preenche a método com o número de linhas copiadas com êxito. Se o argumento pRowsCopied for definido como NULL, ele será ignorado pelo método BCPExec.
Valores de código de retorno
S_OK
O método foi bem-sucedido.E_FAIL
Ocorreu um erro específico do provedor. Para obter informações detalhadas, use a interface ISQLServerErrorInfo.E_UNEXPECTED
A chamada para o método era inesperada. Por exemplo, o método BCPInit não foi chamado antes da chamada desse método. Também ocorrerá se a operação for anulada com a opção BCP_OPTION_ABORT e o método BCPExec for chamado depois.E_OUTOFMEMORY
Erro de memória insuficiente.DB_S_ENDOFROWSET
A operação de cópia em massa terminou e toda a transferência de dados foi concluída.DB_S_ASYNCHRONOUS
O lote atual de linhas foi copiado. Chame o método BCPExec novamente para transferir o próximo lote.DB_S_ERRORSOCCURRED
Ocorreram erros durante a operação de cópia em massa e algumas linhas podem não ter sido copiadas. O número de erros ainda é menor do que o máximo de erros permitido.
Consulte também