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>