建议使用Navicat写mysql存储过程,支持存储过程运行,可以边写边调试。
语法:
BEGIN --开头
END --结尾
DECLARE add_score int; --定义变量
select score into add_score from ×; v给变量赋值
set add_score=×; --给变量赋值
while循环:
WHILE expression DO
statements
END WHILE;
不多描述了,其他语法跟mysql一样无异。
注意:
跟mysql一样,mysql存储过程不区分大小写,in out参数最好定义为 _para1, _para2加下划线。
我曾经把传入参数定义为USERID, 与字段userId重名,把数据库统统干掉,惨痛的教训。
如何为存储过程添加参数?
Navicat创建存储过程,下面有一栏“参数”,可以在此定义,如: _FBUserId int,_UserId int。
逗号隔开,Navicat运行存储过程时会提示输入参数,写参数用逗号隔开即可。
ibatis如何调用mysql存储过程?
定义传入参数:
<parameterMap id="swapParameters" class="java.util.HashMap">
<parameter property="_FBUserId" jdbcType="String" javaType="String" mode="IN" />
<parameter property="_UserId" jdbcType="String" javaType="String" mode="IN" />
</parameterMap>
调用:
<procedure id="userMerge" parameterMap="swapParameters">
{CALL FBUserMerge (?,?)}
</procedure>
OK。