パラメーターを使用しない異機種のバッチ更新

pureQuery では、異なる表を参照する INSERT、UPDATE、および DELETE ステートメントをバッチ処理できます。これらの異機種のバッチ更新を使用して、関連したすべての表をサーバーとの 1 回のネットワーク往復で更新することができます。 異機種のバッチ更新を実行するこの方法を使用して、ストリングのリストとして、あるいは String オブジェクトの配列に入れて SQL ステートメントを提供します。

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 が戻されます。


フィードバック