It doesn't look to me like you really want 'where status ='. Certainly the generated SQL doesn't make any sense. Try something like this:
<update id="updateStatus" parameterClass="java.util.Map"> UPDATE OTM_STAGING SET STATUS = #status# <dynamic prepend="where SEQUENCE in"> <iterate open="(" close=")" property="sequenceList" conjunction=","> SEQUENCE = #sequenceList[]# </iterate> </dynamic> </update> I've got something similar to that which is working fine for me with an Oracle DB. It should produce a statement like ' UPDATE OTM_STAGING SET STATUS = ? where SEQUENCE in (1,3)' Dave We must begin not just to act, but to think, for there is no better slave than the one who believes his slavery to be freedom, and we are in no greater peril than when we cannot see the chains on our minds because there are yet no chains on our feet. -- Michael Reid [EMAIL PROTECTED] eb.org To 01/23/2008 11:15 user-java@ibatis.apache.org AM cc Subject Please respond to Re: Execute batch process for [EMAIL PROTECTED] Update statement apache.org The execute batch is not working for me. Here is the sql-map config <update id="updateStatus" parameterClass="java.util.Map"> UPDATE OTM_STAGING SET STATUS = #status# <dynamic prepend="where"> <iterate property="sequenceList"> SEQUENCE = #sequenceList[]# </iterate> </dynamic> </update> Here is the SqlMapClient's code public static int updateStagingTableStatus(ArrayList sequences, String newStatus) throws SQLException { int totalUpdatedStatus = 0; Map parameterMap = new HashMap(); try { sqlMapper.startTransaction(); parameterMap.put("sequenceList", sequences); parameterMap.put("status", newStatus); sqlMapper.update("updateStatus", parameterMap); totalUpdatedStatus = sqlMapper.executeBatch(); sqlMapper.commitTransaction(); } catch(SQLException sqlEx) { logger.error("SQLException " +sqlEx); } finally { try { sqlMapper.endTransaction (); } catch(SQLException sqlEx) { logger.error("SQLException " + sqlEx); } } return totalUpdatedStatus; } Here is the method call: logger.debug("Update staging table"); ArrayList tempSeq = new ArrayList(); tempSeq.add(new Integer(1)); tempSeq.add(new Integer(3)); int updateCount = XmlService.updateStagingTableStatus(tempSeq, "test_status"); logger.info("updateCount in server "+updateCount); Here is the debug log: 23 Jan 2008 10:57:31] DEBUG [Connection] {conn-100003} Connection [23 Jan 2008 10:57:31] DEBUG [Connection] {conn-100003} Preparing Statement: UPDATE OTM_STAGING SET STATUS = ? where SEQUENCE = ? SEQUENCE = ? [23 Jan 2008 10:57:31] DEBUG [PreparedStatement] {pstm-100004} Executing Statement: UPDATE OTM_STAGING SET STATUS = ? where SEQUENCE = ? SEQUENCE = ? [23 Jan 2008 10:57:31] DEBUG [PreparedStatement] {pstm-100004} Parameters: [test_status, 1, 3] [23 Jan 2008 10:57:31] DEBUG [PreparedStatement] {pstm-100004} Types: [java.lang.String, java.lang.Integer, java.lang.Integer] [23 Jan 2008 10:57:31] ERROR [RmsToOtmXmlBuilder] SQLException com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred while applying a parameter map. --- Check the updateStatus-InlineParameterMap. --- Check the statement (update failed). --- Cause: java.sql.SQLException: ORA-00933: SQL command not properly ended =========================================== What should I fix in the code which gives me something like: PreparedStatement prepStmt = con.prepareStatement( "UPDATE OTM_STAGING SET STATUS = ? WHERE SEQUENCE = ?"); for (int i = 0; i < sequenceList.size(); i++) { prepStmt.setString(1, "updatedStatus"); prepStmt.setInt(2, sequenceList[i]); prepStmt.addBatch(); } int [] numUpdates=prepStmt.executeBatch(); Thanks Jasmin "Chetan Nayak" <[EMAIL PROTECTED]> To user-java@ibatis.apache.org 01/23/2008 09:14 AM cc Subject Please respond to Re: Execute batch process user-java@ibatis.apache.org for Update statement I think u need to use <iterate> for this query ,take a look at IBATIS developer guide ,they have examples on this . Thanks Chetan On 1/23/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: Jay, I saw your posting in iBATIS forum with subject line "iBatis batch executing same performance as Jdbc - Thanks!" I am using iBATIS 2.3.0 and do not have any DAO (no Spring). My requirement is to run execute batch update for prepared statement : update otm_staging set status = 'Processed' where sequence = ? Where 'sequence' will get values from array of integer like {1, 2, 3, 5, 7, 9, 11, 12, 14 ........ } How should I configure my sqlMap resource xml file for the query? Can I still use your method 'private Object batch(SqlMapClient sqlMap, int batchType, String methodName, Object argument)' from the posting ? thanks jasmin ****************************************************************************** ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION Our domain name is changing. Please take note of the sender's e-Mail address and make changes to your personal address list, if needed. Both domains will continue to work, only for a limited time. ****************************************************************************** This email and any files transmitted with it are intended solely for the use of the individual or agency to whom they are addressed. If you have received this email in error please notify the Navy Exchange Service Command e-mail administrator. This footnote also confirms that this email message has been scanned for the presence of computer viruses. Thank You! ******************************************************************************