SQL문으로 전달하는 모든 데이터는 리터럴로 전달되어야 합니다. 모든 SQL문은 ResultSet 오브젝트를 리턴할 수 없습니다.
일괄처리 업데이트를 시작하기 위해 애플리케이션은 이 버전의 updateMany() 메소드를 호출합니다.
int[] updateMany(String... heterogeneousBatchSQL)
heterogeneousBatchSQL 매개변수는 개별 SQL문의 목록이거나 SQL문을 포함하는 String 오브젝트의 배열일 수 있습니다. 다음 두 예제는 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 ();
하나 이상의 SQLException이 JDBC 드라이버에서 리턴되는 경우, 해당 예외는 UpdateManyException 내에서 랩핑됩니다.
JDBC 드라이버 또는 데이터베이스가 SQLException을 리턴하는 경우, updateMany() 메소드가 com.ibm.pdq.runtime.exception.UpdateManyException을 발생시킵니다. UpdateManyException.getUpdateCounts() 메소드를 호출하여 업데이트 계수를 포함하는 배열을 검색할 수 있습니다.
UpdateManyException.getCause() 메소드를 호출하여 원래의 SQLException(또는 여러 개의 SQLException)을 검색할 수 있습니다. JDBC 드라이버가 여러 개의 SQLException을 리턴할 수 있으므로 이러한 예외는 함께 연결되어 있습니다. SQLException.getNextException() 메소드를 호출하여 이를 검색할 수 있습니다. 해당 메소드는 널이 리턴되는 위치에 SQLException이 남아 있지 않을 때까지 SQLException을 리턴합니다.