Toutes les données que vous communiquez dans les instructions SQL doivent être transmises sous forme de littéraux. Aucune des instructions SQL ne peut renvoyer des objets ResultSet.
Pour lancer une mise à jour par lots, votre application appelle cette version de la méthode updateMany() :
int[] updateMany(String... heterogeneousBatchSQL)
Le paramètre heterogeneousBatchSQL peut être une liste d'instructions SQL individuelles ou un tableau d'objets String contenant des instructions SQL. Les deux exemples suivants présentent les différentes méthodes de transmission des instructions SQL :
String insertDept = "insert into dept values("+dept.no+",'"+dept.name+"')"; String insertEmp = "insert into emp values("+emp.id+",'"+emp.name+"','"+emp.ssn+"',"+emp.dept_no+")"; String insertEmpProj = "insert into emp_proj values("+emp.id+","+dept.no+")"; int[] updateCounts = myData.updateMany (insertDept, insertEmp, insertEmpProj); String[] sqlArray = new String[3]; sqlArray[0] = insertDept; sqlArray[1] = insertEmp; sqlArray[2] = insertEmpProj; int[] updateCounts = myData.updateMany (sqlArray);
La méthode renvoie un tableau d'entiers possédant le même nombre d'éléments que les instructions SQL que vous avez fournies. Ce tableau contient les mêmes informations que la méthode Statement.executeBatch() dans les renvois JDBC.
Si vous utilisez les méthodes annotées et souhaitez appeler la méthode updateMany(), voir Extension des classes définies par l'utilisateur depuis les classes d'implémentation générées. Vous pouvez appeler la méthode updateMany() comme suit :
int[] updateCounts = updateInf.updateMany (hetrogeneousBatchSQL); updateInf.commit ();
Si une ou plusieurs exceptions SQLExceptions sont renvoyées par le pilote JDBC, elles sont encapsulées dans une exception UpdateManyException.
Si le pilote JDBC ou la base de données renvoie une exception SQLException, la méthode updateMany() produit une exception com.ibm.pdq.runtime.exception.UpdateManyException. Vous pouvez récupérer un tableau contenant le nombre de mises à jour en appelant la méthode UpdateManyException.getUpdateCounts().
Vous pouvez récupérer l'exception SQLException d'origine (ou plusieurs exceptions SQLExceptions) en appelant la méthode UpdateManyException.getCause(). Dans la mesure où le pilote JDBC peut renvoyer plusieurs exceptions SQLExceptions, ces dernières sont liées. Vous pouvez les récupérer en appelant la méthode SQLException.getNextException(), laquelle renvoie une exception SQLException jusqu'à ce qu'il n'y ait plus de SQLExceptions : la valeur null est alors renvoyée.