Partager via


IBCPSession::BCPExec (OLE DB)

Effectue l'opération de copie en bloc.

Syntaxe

HRESULT BCPExec( 
      DBROWCOUNT *pRowsCopied);

Notes

La méthode BCPExec copie des données à partir d'un fichier utilisateur vers une table de base de données ou vice versa, selon la valeur du paramètre eDirection utilisé avec la méthode IBCPSession::BCPInit.

Avant d'appeler BCPExec, appelez la méthode BCPInit avec un nom de fichier utilisateur valide, sous peine de provoquer une erreur. La seule exception est si une requête doit être utilisée pour une opération de copie en bloc sortante. Dans ce cas, spécifiez NULL pour le nom de table dans la méthode BCPInit, puis spécifiez la requête à l'aide de l'option BCP_OPTION_HINTS.

La méthode BCPExec est la seule méthode de copie en bloc qui est susceptible d'être en attente pendant une durée prolongée. Il s'agit par conséquent de la seule méthode de copie en bloc qui prend en charge le mode asynchrone. Pour utiliser le mode asynchrone, affectez la valeur VARIANT_TRUE à la propriété de session spécifique au fournisseur SSPROP_ASYNCH_BULKCOPY avant d'appeler la méthode BCPExec. Cette propriété est disponible dans le jeu de propriétés DBPROPSET_SQLSERVERSESSION. Pour tester l'achèvement, appelez la méthode BCPExec avec les mêmes paramètres. Si la copie en bloc n'est pas encore terminée, la méthode BCPExec retourne DB_S_ASYNCHRONOUS. Elle retourne également dans l'argument pRowsCopied le nombre de lignes qui ont été envoyées ou reçues à partir du serveur. Les lignes envoyées au serveur ne sont validées qu'une fois que la fin du lot a été atteinte.

Arguments

  • pRowsCopied[out]
    Pointeur vers une valeur DWORD. La méthode BCPExec remplit la valeur DWORD avec le nombre de lignes copiées avec succès. Si l'argument pRowsCopied a la valeur NULL, il est ignoré par la méthode BCPExec.

Valeurs de code de retour

  • S_OK
    La méthode a réussi.

  • E_FAIL
    Une erreur spécifique au fournisseur s'est produite. Pour obtenir des informations détaillées, utilisez l'interface ISQLServerErrorInfo.

  • E_UNEXPECTED
    L'appel à la méthode n'était pas attendu. Par exemple, la méthode BCPInit n'a pas été appelée avant d'appeler cette méthode. Se produit également si l'opération a été abandonnée suite à l'utilisation de l'option BCP_OPTION_ABORT et que la méthode BCPExec a été appelée ensuite.

  • E_OUTOFMEMORY
    Erreur de mémoire insuffisante.

  • DB_S_ENDOFROWSET
    L'opération de copie en bloc s'est terminée et tout le transfert de données a été effectué.

  • DB_S_ASYNCHRONOUS
    Le lot actuel de lignes a été copié. Rappelez la méthode BCPExec pour transférer le lot suivant.

  • DB_S_ERRORSOCCURRED
    Des erreurs se sont produites pendant l'opération de copie en bloc et certaines lignes n'ont pas pu être copiées. Le nombre d'erreurs est inférieur au nombre maximal d'erreurs autorisé.

Voir aussi

Concepts

Autres ressources