[
http://issues.apache.org/jira/browse/IBATIS-153?page=comments#action_12314128 ]
ppz4j commented on IBATIS-153:
------------------------------
Sorry, but what MDC means ?
Follow the exception's full stack-trace:
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in testdata.xml.
--- The error occurred while applying a parameter map.
--- Check the defaultParams.
--- Check the results (failed to retrieve results).
--- 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.executeQueryForList(GeneralStatement.java:119)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:105)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:77)
at it.iwbnk.app.data.IBatisModTest.testOptions(IBatisModTest.java:27)
at it.iwbnk.app.data.IBatisModTest.main(IBatisModTest.java:40)
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:324)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
Caused by: java.lang.NullPointerException
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:348)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:291)
at
com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:169)
... 12 more
Caused by:
java.lang.NullPointerException
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:348)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:291)
at
com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:169)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:119)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:105)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:77)
at it.iwbnk.app.data.IBatisModTest.testOptions(IBatisModTest.java:27)
at it.iwbnk.app.data.IBatisModTest.main(IBatisModTest.java:40)
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:324)
at com.iwbnk.AppMain.main(AppMain.java:78)
Caused by:
java.lang.NullPointerException
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:348)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:291)
at
com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:169)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:119)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:105)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:77)
at it.iwbnk.app.data.IBatisModTest.testOptions(IBatisModTest.java:27)
at it.iwbnk.app.data.IBatisModTest.main(IBatisModTest.java:40)
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:324)
at com.iwbnk.application.AppMain.main(AppMain.java:78)
Best Regards,
Davide
> NullPointer exception during call of oracle stored procedure with REF CURSOR
> as output parameter
> -------------------------------------------------------------------------------------------------
>
> Key: IBATIS-153
> URL: http://issues.apache.org/jira/browse/IBATIS-153
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.1.0
> Environment: Oracle 9.
> Reporter: ppz4j
>
> the invocation of an oracle stored procedura with REF CURSOR as output
> parameter raises a NullPointerException.
> The procedure's signature is :
> PROCEDURE test (
> out_cur OUT my_cur,
> out_err_code OUT NUMBER,
> out_err_text OUT VARCHAR2
> )
> where TYPE my_cur IS REF CURSOR;
> and ibatis configuration is :
>
> <parameterMap id="params" class="map">
> <parameter property="Out_Cur" jdbcType="ORACLECURSOR" mode="OUT"/>
> <parameter property="out_err_code" jdbcType="INTEGER" mode="OUT"/>
> <parameter property="out_err_text" jdbcType="VARCHAR" mode="OUT"/>
> </parameterMap>
> <resultMap id="result" class="it.app.test.Stock">
> <result property="idInstrument" column="id_instrument"/>
> <result property="shortName" column="shortname"/>
> <result property="refPrice" column="refprice"/>
> </resultMap>
> <procedure id="getOptions" resultMap="result" parameterMap="params">
> { call OPT_USER.TEST.TEST_CURSOR(?,?,?) }
> </procedure>
> the exception stack trace is:
> Caused by:
> java.lang.NullPointerException
> at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:352)
> at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:291)
> at
> com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:105)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:78)
> at it.imiweb.app.data.DataModelTest.testOptions(DataModelTest.java:295)
> at it.imiweb.app.data.DataModelTest.main(DataModelTest.java:445)
> Looking inside the code it seems that the problem is due to the invocation
> of the follow instruction:
> rs = cs.getResultSet()
> in method executeQueryProcedure of SQLExcecutor class that returns a null
> value instead of the resultset as the stored procedure output. To
> successfully invoke the procedure i have modified the code as follow:
> public void executeQueryProcedure(RequestScope request, Connection conn,
> String sql, Object[] parameters,
> int skipResults, int maxResults,
> RowHandlerCallback callback)
> ...
> ...
> cs.execute();
>
> //this method returns always null
> //rs = cs.getResultSet();
>
> //with this code is possible to get the resultset even if the procedure
> returns more than one output parameter
> retrieveOutputParameters(cs, mappings, parameters);
> for ( int ii = 0; ii < parameters.length; ii++ ) {
> if ( parameters[ii] instanceof ResultSet ) {
> rs = ( ResultSet ) parameters[ii];
> break;
> }
> }
> //end added code
>
> errorContext.setMoreInfo("Check the results (failed to retrieve
> results).");
> handleResults(request, rs, skipResults, maxResults, callback);
> errorContext.setMoreInfo("Check the output parameters (retrieval of
> output parameters failed).");
> //commented because it's already invoked and another call will throw an
> exception
> //retrieveOutputParameters(cs, mappings, parameters);
> ...
> ...
> }
> The driver jdbc is :
> Manifest-Version: 1.0
> Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
> Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
> Specification-Vendor: "Oracle Corporation" .
> Implementation-Title: "ojdbc14.jar"
> Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
> Implementation-Vendor: "Oracle Corporation"
> Implementation-Time: "Tue Apr 6 01:10:57 2004"
> Can you help me, please ?
--
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