I am trying to call a sybase stored proc which returns results set and a return value, has input paramters & output parameters. 

I need to know how to to get the
1. return value ( 0 on success, -1 on failure)
2. out parms values - as_error, as_error_msg
3. Result set list ( if success)
 
Thanks,
Balaji
 
 
/******************************************************/
ERROR
/******************************************************/
 
com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in unitTest/domain/f3721.xml. 
--- The error occurred while applying a parameter map. 
--- Check the F3721.GetAppsParam. 
--- 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:188)
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:101)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:78)
at unitTest.domain.DomainTest.main(DomainTest.java:41)
 
/*****************************************************************/
JAVA CODE:
/*****************************************************************/
 
public static Integer callProc() {
 Map param = new HashMap();
 param.put("value", new Integer(-1));
 param.put("userid", "testuser");
 //param.put("userid", "");  //for this too
 
 try {
     List list = sqlMap.queryForList("getApps", param);
 } catch (SQLException sqe) {
    sqe.printStackTrace();
 }
 
   System.out.println("as_error=" + param.get("as_error"));
   System.out.println("as_error_msg=" + param.get("as_error_msg"));
   return (Integer)param .get("value");
}
 
/*****************************************************************/
STORED PROCEDURE:
/*****************************************************************/
 
CREATE  PROCEDURE proc_get_applist
 
(
      @as_userid         typ_ch_userid,
     @as_error            char(5) OUTPUT,
     @as_error_msg       varchar(255) OUTPUT
)
 
AS
 
--Check key values
IF @as_userid IS NULL OR @as_userid = ""
   BEGIN
  SELECT  @as_error = '-1'
  SELECT  @as_error_msg = "Key values cannot be null."
      RETURN 1
   END
 

SELECT   t1.id_app, t1.cd_edit_status,   
FROM     application t1
 
RETURN 0
 
/*********************************************************************************/
SQL MAP
/*****************************************************************************
<parameterMap id="GetAppsParam" class="java.util.HashMap">
     <parameter property="value" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>
     <parameter property ="userid" jdbcType="VARCHAR" javaType="string" mode="IN"/>
     <parameter property ="as_error" jdbcType="VARCHAR" javaType="string" mode="INOUT"/>
     <parameter property ="as_error_msg" jdbcType="VARCHAR" javaType="string" mode="INOUT"/>
</parameterMap>
 

<resultMap id="getAppsResult" class="java.util.HashMap">
     <result property="id_app" column="ID_APP"/>
     <result property="dt_create" column="DT_CREATE"/>
     <result property="cd_edit_status" column="CD_EDIT_STATUS" nullValue=""/>
</resultMap>
 

<procedure id="getApps" parameterMap="GetAppsParam"    resultClass="getAppsResult" >
     { ? = call proc_get_applist(?,?,?)}
</procedure>
 

 

Reply via email to