SQL ステートメントに渡すすべてのデータは、リテラルとして渡される必要があります。 SQL ステートメントはいずれも、ResultSet オブジェクトを戻すことはできません。
バッチ更新を開始するには、アプリケーションは以下のバージョンの updateMany() メソッドを呼び出します。
int[] updateMany(String... heterogeneousBatchSQL)
パラメーター heterogeneousBatchSQL は、個々の SQL ステートメントのリスト、または SQL ステートメントが含まれる String オブジェクトの配列になります。 以下の 2 つの例は、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);
メソッドは、提供した SQL ステートメントと同じ数のエレメントを含む整数配列を戻します。 この配列には、JDBC で Statement.executeBatch() メソッドが戻すのと同じ情報が含まれます。
アノテーション付きメソッドを使用しており、updateMany() メソッドを呼び出す場合は、生成インプリメンテーション・クラスからのユーザー定義クラスの拡張を参照してください。updateMany() メソッドを以下のように呼び出すことができます。
int[] updateCounts = updateInf.updateMany (hetrogeneousBatchSQL); updateInf.commit ();
1 つ以上の SQLExceptions が JDBC ドライバーから戻されると、それらは UpdateManyException 内にラップされます。
JDBC ドライバーまたはデータベースが SQLException を戻すと、updateMany() メソッドは com.ibm.pdq.runtime.exception.UpdateManyException をスローします。 UpdateManyException.getUpdateCounts() メソッドを呼び出すことによって、更新カウントが含まれる配列を取得できます。
UpdateManyException.getCause() メソッドを呼び出すことによって、元の SQLException (または複数の SQLException) を取得できます。 JDBC ドライバーは複数の SQLException を戻すことができるため、これらの例外は一緒にチェーニングされます。 これらは、SQLException.getNextException() メソッドを呼び出すことによって取得できます。このメソッドは、存在しなくなるまで SQLException を戻します。SQLException がなくなると NULL が戻されます。