[ http://issues.apache.org/jira/browse/IBATIS-149?page=all ]
     
Clinton Begin closed IBATIS-149:
--------------------------------

    Fix Version: 2.1.5
     Resolution: Fixed
      Assign To: Clinton Begin

Fixed as described by Sven in IBATIS-152.

> Stored procedure call with out parameters throws exception (worked in 2.0.9b)
> -----------------------------------------------------------------------------
>
>          Key: IBATIS-149
>          URL: http://issues.apache.org/jira/browse/IBATIS-149
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>     Versions: 2.1.0
>  Environment: Oracle 9iR2, Spring 1.1.5, DBCP 1.2.1
>     Reporter: Nilesh Kapadia
>     Assignee: Clinton Begin
>      Fix For: 2.1.5

>
> I have a stored procedure that has out parameters:
>       <parameterMap id="displaceSplitPosParameterMap" 
> class="com.mycompany.ws.common.data.DisplaceSplitPosParam">
>               <parameter property="returnValue" jdbcType="INTEGER" 
> javaType="java.lang.Integer" mode="OUT"/>
>               <parameter property="positionNo" jdbcType="VARCHAR" 
> javaType="java.lang.String" mode="IN"/>
>               <parameter property="positionPrefix" jdbcType="VARCHAR" 
> javaType="java.lang.String" mode="OUT"/>
>               <parameter property="positionNum" jdbcType="INTEGER" 
> javaType="java.lang.Integer" mode="OUT"/>
>               <parameter property="positionSuffix" jdbcType="VARCHAR" 
> javaType="java.lang.String" mode="OUT"/>
>       </parameterMap>
>       
>       <procedure id="callDisplaceSplitPos" 
> parameterMap="displaceSplitPosParameterMap">
>               {?= call DISPLACE.SPLIT_POS(?, ?, ?, ? )}
>       </procedure>
> When I call it (in this case, a JUnit test), it throws an exception with this 
> stack trace:
> org.springframework.jdbc.UncategorizedSQLException: (SqlMapClient operation): 
> encountered SQLException [  
> --- The error occurred in com/mycompany/ws/dao/ibatis/map/Displace.xml.  
> --- The error occurred while applying a parameter map.  
> --- Check the Displace.displaceSplitPosParameterMap.  
> --- Check the output parameters (retrieval of output parameters failed).  
> --- Cause: java.lang.NullPointerException]; nested exception is 
> com.ibatis.common.jdbc.exception.NestedSQLException:   
> --- The error occurred in com/mycompany/ws/dao/ibatis/map/Displace.xml.  
> --- The error occurred while applying a parameter map.  
> --- Check the Displace.displaceSplitPosParameterMap.  
> --- Check the output parameters (retrieval of output parameters failed).  
> --- Cause: java.lang.NullPointerException
> com.ibatis.common.jdbc.exception.NestedSQLException:   
> --- The error occurred in com/mycompany/ws/dao/ibatis/map/Displace.xml.  
> --- The error occurred while applying a parameter map.  
> --- Check the Displace.displaceSplitPosParameterMap.  
> --- Check the output parameters (retrieval of output parameters failed).  
> --- Cause: java.lang.NullPointerException
> Caused by: java.lang.NullPointerException
>       at 
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:184)
>       at 
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:100)
>       at 
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:561)
>       at 
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:536)
>       at 
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:97)
>       at 
> org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMapClientTemplate.java:207)
>       at 
> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:165)
>       at 
> org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:205)
>       at com.mycompany. < I cut out part of the stack trace here >
> Caused by: java.lang.NullPointerException
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> com.ibatis.common.jdbc.logging.ResultSetLogProxy.invoke(ResultSetLogProxy.java:47)
>       at $Proxy46.close(Unknown Source)
>       at 
> com.ibatis.sqlmap.engine.execution.SqlExecutor.closeResultSet(SqlExecutor.java:392)
>       at 
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:298)
>       at 
> com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
>       at 
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:169)
>       ... 39 more
> The Java code used to call:
>     public DisplaceSplitPosParam callDisplaceSplitPos(String positionNo) {
>         DisplaceSplitPosParam param = new DisplaceSplitPosParam();
>         param.setPositionNo(positionNo);
>         queryForObject("callDisplaceSplitPos", param);
>         return param;
>     }
>       
> This worked flawlessly in 2.0.9b, but when switching to 2.1.0 it fails.  This 
> is for an Oracle 9iR2 database.  I am using Spring 1.1.5's iBatis support.  
> DBCP 1.2.1 is being used in this test.

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

Reply via email to