我写的iBATIS调用存储过程为什么只执行SELECT语句,麻烦各位大大帮忙看下。
我写的iBATIS调用存储过程为什么只执行SELECT语句,麻烦各位大大帮忙看下。SQLcodeCREATEDEFINER=`root`@`localhost`PROCE...
我写的iBATIS调用存储过程为什么只执行SELECT语句,麻烦各位大大帮忙看下。
SQL code
CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_check_login`(IN username_val VarChar(40),
IN password_val VarChar(40),
IN IP_val VarChar(40))
BEGIN
DECLARE number_val int;
UPDATE user SET lastlogin = now(),
lastloginip = IP_val
WHERE username = username_val
and password = password_val;
SELECT COUNT(id) INTO number_val FROM user WHERE username = username_val
and password = password_val ;
SELECT number_val;
END;
存储过程直接用mysql调用是没问题的,一切都正常。
但是用iBATIS调用就只执行了SELECT COUNT(id)和SELECT number_val;
XML code
<parameterMap id="loginpara" class="java.util.HashMap">
<parameter property="username_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
<parameter property="password_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
<parameter property="IP_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="check_login" resultClass="int" parameterMap="loginpara">
<![CDATA[{call pr_check_login(?,?,?)}]]>
</procedure>
麻烦各位大大指正下。最好只在一个存储过程中执行。 展开
SQL code
CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_check_login`(IN username_val VarChar(40),
IN password_val VarChar(40),
IN IP_val VarChar(40))
BEGIN
DECLARE number_val int;
UPDATE user SET lastlogin = now(),
lastloginip = IP_val
WHERE username = username_val
and password = password_val;
SELECT COUNT(id) INTO number_val FROM user WHERE username = username_val
and password = password_val ;
SELECT number_val;
END;
存储过程直接用mysql调用是没问题的,一切都正常。
但是用iBATIS调用就只执行了SELECT COUNT(id)和SELECT number_val;
XML code
<parameterMap id="loginpara" class="java.util.HashMap">
<parameter property="username_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
<parameter property="password_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
<parameter property="IP_val" jdbcType="VarChar" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="check_login" resultClass="int" parameterMap="loginpara">
<![CDATA[{call pr_check_login(?,?,?)}]]>
</procedure>
麻烦各位大大指正下。最好只在一个存储过程中执行。 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询