论坛首页 入门技术论坛

关于ibatis调用存储过程返回值的问题

浏览 9580 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-05  
xml代码如下:
<parameterMap id="usefulMap" class="java.util.HashMap" >
<parameter property="topicid" jdbcType="int" javaType="java.lang.Integer" mode="IN"/>
<parameter property="userid" jdbcType="int" javaType="java.lang.Integer" mode="IN"/>
<parameter property="rtn" jdbcType="CHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>
<procedure id="addUsefulProcedure" parameterMap="usefulMap">
{call adduseful(?,?,?)}
</procedure>


存储过程:
CREATE PROCEDURE `adduseful`(tid int,uid int,OUT rtnstring char(7))
begin
   if (tid>0) then
     insert into aa(topicid,userid) values (tid,uid);
     set rtnstring="insert";
   else 
     set rtnstring="notopic";
   end if;
end


java调用
Map map = new HashMap();		
map.put("topicid", topicId);
map.put("userid", userId);
map.put("rtn", "");
sqlMapClient.queryForObject("addUsefulProcedure",map;
return map.get("rtn").toString();


在mysql执行存储过程没有问题,但是在ibatis调用存储过程的时候,无法返回值,还出现连接数据库超时的错误提示。
heck the statement (update procedure failed).  
Lock wait timeout exceeded; try restarting transaction
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)exception:

	at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
	at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
	at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
	at com.city.topic.dao.TopicDaoIm.addUsefulProcedure(TopicDaoIm.java:198)
	at com.city.topic.dao.TopicDaoIm.main(TopicDaoIm.java:291)


不知道什么原因,请有经验的朋友帮忙看看。
   发表时间:2008-10-01  
现在回答你不知道晚不晚...
调用带out参数的存储过程 不能用query,要用insert
0 请登录后投票
   发表时间:2008-10-01  
现在回答你不知道晚不晚...
调用带out参数的存储过程 不能用query,要用insert
0 请登录后投票
   发表时间:2008-12-03  
菜鸟提问:
CREATE PROCEDURE `adduseful`(tid int,uid int,OUT rtnstring char(7))
begin
   if (tid>0) then
     insert into aa(topicid,userid) values (tid,uid);
     set rtnstring="insert";
   else
     set rtnstring="notopic";
   end if;
end

这段代码写在哪个文件??
0 请登录后投票
   发表时间:2008-12-03  
r4196503 写道
菜鸟提问:
CREATE PROCEDURE `adduseful`(tid int,uid int,OUT rtnstring char(7))
begin
   if (tid>0) then
     insert into aa(topicid,userid) values (tid,uid);
     set rtnstring="insert";
   else
     set rtnstring="notopic";
   end if;
end

这段代码写在哪个文件??

这是个存储过程,在客户端执行一下就好了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics