存储过程

DELIMITER &&
drop procedure if exists ups;
CREATE PROCEDURE ups()
BEGIN
DECLARE i int;
DECLARE r int;
set i=0;
set r=(select count(1) from tbl_user_operator);
WHILE i<=r do
update tbl_user_operator  set invitationCode=(126532+i) where ID = (select f.ID from (select ID from tbl_user_operator) f LIMIT i,1);
set i = i +1;  
end while;
end &&
DELIMITER ;

//以上部分先执行,执行成功后再调用ups


call ups();

 

 

大概这样理解,mysql默认以分号作为sql语句的结束来进行执行,当我们在创建存储过程时,为了不让完整的存储过程语句由于分号而提前执行,需要临时规定以//或者$$来作为结束符号。这样的话,创建存储过程时,中间的分号会被忽略,直到遇到//符号才执行语句。

这里写图片描述

就像上面的截图,创建一个add_pro的存储过程实现了将前两个参数相加赋值给第三个out类型的参数。

创建存储过程完毕后,再delimiter+分号就可以还原分号的结束功能。

posted @ 2017-08-23 14:25  xiaowejie  阅读(149)  评论(0编辑  收藏  举报