Oracle
 sql >> Base de données >  >> RDS >> Oracle

La méthode ExecuteBatch renvoie un tableau de valeur -2 en Java

La spécification jdbc a ce qui suit à dire sur le code de retour des mises à jour par lots :

■ 0 ou supérieur — la commande a été traitée avec succès et la valeur est un nombre de mises à jour indiquant le nombre de lignes dans la base de données qui ont été affectées par l'exécution de la commandeChapitre 14 Mises à jour par lots 121

■ Statement.SUCCESS_NO_INFO — la commande a été traitée avec succès, mais le nombre de lignes affectées est inconnu

Statement.SUCCESS_NO_INFO est défini comme étant -2, donc votre résultat indique que tout a bien fonctionné, mais vous n'obtiendrez pas d'informations sur le nombre de colonnes mises à jour.

La documentation oracle indique :

•Pour un lot d'instructions préparées, il n'est pas possible de connaître le nombre de lignes affectées dans la base de données par chaque instruction individuelle du lot. Par conséquent, tous les éléments du tableau ont une valeur de -2. Selon la spécification JDBC 2.0, une valeur de -2 indique que l'opération a réussi mais que le nombre de lignes affectées est inconnu.

•Pour un lot d'instructions génériques, le tableau contient le nombre réel de mises à jour indiquant le nombre de lignes affectées par chaque opération. Le nombre réel de mises à jour ne peut être fourni que dans le cas d'instructions génériques dans l'implémentation Oracle du traitement par lots standard.

• Pour un lot d'instructions appelables, le serveur renvoie toujours la valeur 1 comme nombre de mises à jour, quel que soit le nombre de lignes affectées par chaque opération.

Il semble donc que si vous avez besoin du nombre de mises à jour, vous ne pouvez pas utiliser PreparedStatement s mais doivent revenir à la simple Statement s.