浏览 9580 次
锁定老帖子 主题:关于ibatis调用存储过程返回值的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-05
<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) 不知道什么原因,请有经验的朋友帮忙看看。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-01
现在回答你不知道晚不晚...
调用带out参数的存储过程 不能用query,要用insert |
|
返回顶楼 | |
发表时间:2008-10-01
现在回答你不知道晚不晚...
调用带out参数的存储过程 不能用query,要用insert |
|
返回顶楼 | |
发表时间: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 这段代码写在哪个文件?? |
|
返回顶楼 | |
发表时间: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 这段代码写在哪个文件?? 这是个存储过程,在客户端执行一下就好了 |
|
返回顶楼 | |