My question is fairly simple:

How can I use ibatis to get result sets from a stored procedure that has no "OUT" or "INOUT" parameters?

The stored procedures that I need to invoke take one or more "IN" parameters and generate one or more result sets. They don't have any declared "OUT" or "INOUT" parameters.

Does someone have an example that could help me (and several others)? Or, can you point me in the right direction?

The DBMS I am using is Sybase, if that matters.

Thanks a lot!

Ravi.

--- Begin Message ---
 am running into a problem accessing result sets from stored procedure using ibatis datamapper.

My DBMS is sybase and driver is Jtds.

Here is the sqlmap:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="PropAssessmentNameSpace">

<!-- <typeAlias alias="assessment" type="PropAssessment"/> -->

<resultMap id="propAssessmentResult" class="PropAssessment">
<result property="rptdPropStrAddr" column="RptdPropStrAddr" nullValue=""/>
</resultMap>

<parameterMap id="PropAssessmentParamMap" class="java.util.HashMap" >
<parameter property="casefileId" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN"/>

</parameterMap>

<procedure id="stpRtrvPropAssessmtId" parameterMap="PropAssessmentParamMap" resultClass="PropAssessment">

{call stpRtrvPropAssessmt (?)}

</procedure>

</sqlMap>
______________________________________________

The code snippet that invokes the procedure is below:

HashMap paramMap = new HashMap();
paramMap.put("@casefileId", "ravi4");
DataSource ds = sqlMap.getDataSource();
sqlMap.setUserConnection(conn);

sqlMap.queryForObject("stpRtrvPropAssessmtId", paramMap);

When I execute the stored procedure in isql mode, with "ravi4" as the input param, it gives me one row as the result set.
____________________________________________________

Here is the stack trace and log from executing the procedure through ibatis:

DEBUG 06-02 10:53:34
Unknown macro:
Unknown macro: {conn-100000}
Connection (ConnectionLogProxy.java:42)
DEBUG 06-02 10:53:34
Unknown macro:
Unknown macro: {pstm-100001}
PreparedStatement: (PreparedStatementLogProxy.java:48)
DEBUG 06-02 10:53:34
Unknown macro:
Unknown macro: {pstm-100001}
Parameters: [ravi4] (PreparedStatementLogProxy.java:49)
DEBUG 06-02 10:53:34 Types: [java.lang.String] (PreparedStatementLogProxy.java:50)
DEBUG 06-02 10:53:34
Unknown macro: {rset-100002}
ResultSet (ResultSetLogProxy.java:41)
com.ibatis.common.jdbc.exception.NestedSQLException:
— The error occurred in config/PropAssessment.xml.
— The error occurred while applying a parameter map.
— Check the PropAssessmentNameSpace.PropAssessmentParamMap.
— 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.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 com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:69)
at PropAssessment.main(PropAssessment.java:266)
Caused by: java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.ResultSetLogProxy.invoke(ResultSetLogProxy.java:47)
at $Proxy2.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)
… 6 more

Caused by:
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.ResultSetLogProxy.invoke(ResultSetLogProxy.java:47)
at $Proxy2.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)
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 com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:69)
at PropAssessment.main(PropAssessment.java:266)

Caused by:
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.ResultSetLogProxy.invoke(ResultSetLogProxy.java:47)
at $Proxy2.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)
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 com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:69)
at PropAssessment.main(PropAssessment.java:266)

Where am I going wrong?

Thanks in advance for your help!

Ravi.


--- End Message ---

Reply via email to