Problem:
The "invalid row index" Problem occurs, when i try to execute a stored 
procedure on Oracle 10.2.0.1.0. This particular procedure has 60 in and 1 out 
parameters. The interesting point is, that a similar procedure with only 13/1 
in/out parameters works fine. So maybe there is any limit for the parameters?
Plain JBDC calls worked well with the last Versions of our application, but 
after we planned switching to iBatis we hit this barrier.


So far i tried:
-using different oracle drivers
-using different jdbc/java types as described at 
http://download.oracle.com/docs/cd/B10501_01/java.920/a96654/basic.htm#1001613
-calling the plsql script as function or as stored procedure -using different 
positions for the affected parameter in my ParameterMap (which resulted in 
different outputs of the same kind of error)

-----parameterMap
 <parameterMap id="insertFttAppMap" class="java.util.HashMap">
                <parameter property="v_id" jdbcType="INTEGER" mode="OUT"/>
                <parameter property="con_id" jdbcType="INTEGER" mode="IN"/>
                <parameter property="startpos" jdbcType="VARCHAR" mode="IN"/>
                <parameter property="endpos" jdbcType="VARCHAR" mode="IN"/>
                <parameter property="execdate" jdbcType="VARCHAR" mode="IN"/>
                <parameter property="valuedate" jdbcType="VARCHAR" mode="IN"/>
                <parameter property="creationdate" jdbcType="VARCHAR" 
mode="IN"/> ... (61 in total)
                <parameter property="chargeaccnbr" jdbcType="VARCHAR" 
mode="IN"/>
                <parameter property="payrunid" jdbcType="VARCHAR" mode="IN"/>
                <parameter property="payrundt" jdbcType="VARCHAR" mode="IN"/> 
</parameterMap> 


-----procedure
<procedure id="insertFttAppTransaction" parameterMap="insertFttAppMap">
        { call SPTRANSACTIONINSERT_PROC (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}
</procedure>


-----Stack Trace
--- The error occurred in ibatis/SQLJobDAO_Extensions.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SQLJobDAO_Extensions.insertFttAppMap.  
--- Check the parameter mapping for the 'payrunid' property.  
--- Cause: java.sql.SQLException: Ungültiger Spaltenindex -->(invalid row index)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91)
        at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
        at 
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
        at 
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:67)
        at 
com.tembit.tpf.dao.impl.SQLjobDAO_Extensions.insertFttAppTransaction(SQLjobDAO_Extensions.java:163)
        at com.tembit.ftt.converter.PfJob.getTransaction(PfJob.java:496)
        at com.tembit.ftt.converter.PfJob.getSlot(PfJob.java:406)
        at com.tembit.ftt.converter.PfJob.getElements(PfJob.java:324)
        at com.tembit.ftt.converter.PfJob.run(PfJob.java:279)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)
Caused by: java.sql.SQLException: Ungültiger Spaltenindex
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5306)
        at 
oracle.jdbc.driver.OracleCallableStatement.setString(OracleCallableStatement.java:4541)
        at 
com.ibatis.sqlmap.engine.type.StringTypeHandler.setParameter(StringTypeHandler.java:30)
        at 
com.ibatis.sqlmap.engine.type.UnknownTypeHandler.setParameter(UnknownTypeHandler.java:69)
        at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
        at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
        at 
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdateProcedure(SqlExecutor.java:228)
        at 
com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteUpdate(ProcedureStatement.java:30)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
        ... 10 more

Since i lack any more ideas to solve the problem, i would be thankful for your 
support.
Jens Borrack

Reply via email to