Setting Out Parameter for Stored Procedure fails. Error says call 
"getMoreResults
---------------------------------------------------------------------------------

                 Key: IBATIS-385
                 URL: https://issues.apache.org/jira/browse/IBATIS-385
             Project: iBatis for Java
          Issue Type: Bug
          Components: SQL Maps
    Affects Versions: 2.2.0
         Environment: jTDS against MS SQL Server 2000. Java 1.4.2_13
            Reporter: Brett Knights


I'm calling getSqlMapClientTemplate().insert on a stored procedure with one 
output parameter.

        <parameterMap id="insertUserParams" class="com.tanner.eda.model.User" >
                <parameter property="id"                  jdbcType="INTEGER" 
javaType="java.lang.Long"   mode="OUT"/>
                <parameter property="accountId"           jdbcType="INTEGER" 
javaType="java.lang.Long"   mode="IN"/>
                 ...
        </parameterMap>
        
        <procedure id="addUser" parameterMap="insertUserParams">
        {call tewciWebUser (?,?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}
        </procedure>

I've lost the exact error message but it told me that     SqlExecutor. 
executeUpdateProcedure  was calling retrieveOutputParameters(request, cs, 
mappings, parameters, null); before any available record sets or result counts 
had been cleared. 

To fix this I inserted the following at line after cs.execute (line 226 on my 
copy of the source)
      rows = clearResults(cs);

and added the following method to the SqlExecutor:
        private int clearResults(Statement stmt) throws SQLException{
        int rowCount = 0;
         while(true){
                 if(moveToNextResultsSafely(stmt)){
                         ResultSet rs = stmt.getResultSet();
                         if( rs != null){
                                 rs.close();
                                 continue;
                         }
                 }
                 else{
                         int availRows = stmt.getUpdateCount();
                         if(availRows >= 0) {
                                rowCount += availRows;
                                continue;
                         }
                 }
                 break;
         }
         return rowCount;
  }


executeUpdateProcedure

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to