您的位置:首页 > 数据库 > MySQL

Mysql存储过程的基本结构

2017-07-13 16:40 267 查看

存储过程的基本结构

删除原有存储过程

设置DELIMITER

创建存储过程

设置DELIMITER

--删除原有存储过程
DROP PROCEDURE IF EXISTS `testCursor`;

--设置新的DELIMITER,以便在存储过程中使用“;”
DELIMITER $$

--创建存储过程
CREATE PROCEDURE testCursor()
BEGIN
....
END $$

--设置DELIMITER,改回“;”
DELIMITER ;


存储过程主体中的顺序

定义局部变量

为局部变量赋值

定义游标

定义处理程序

打开游标

定义LOOP

将游标值赋值到局部变量

业务处理逻辑

判断游标是否结束,如果游标结束则离开LOOP

结束LOOP

关闭游标

--存储过程开始
BEGIN
--定义局部变量
DECLARE _USERID BIGINT(20) DEFAULT NULL;
DECLARE _USERCOUNT INT(11) DEFAULT NULL;
DECLARE _DONE INT(11) DEFAULT FALSE;
DECLARE _IDSTR VARCHAR(255) DEFAULT NULL;

--定义游标
DECLARE _CUR_USERS CURSOR FOR SELECT id FROM t_sys_users ORDER BY id DESC LIMIT 0,2;

--定义处理程序用于处理游标结束的情况,这个必须定义在游标之后
DECLARE CONTINUE HANDLER FOR NOT FOUND SET _DONE = TRUE;

--打开游标
OPEN _CUR_USERS;

--命名一个LOOP,在leave时使用,注意:LOOP后没有标点
LOOP_USERS: LOOP
--将游标值赋值到局部变量
FETCH _CUR_USERS INTO _USERID;

--业务处理逻辑
--设置值1
SET _IDSTR = CONCAT(IFNULL(_IDSTR,""),"|",_USERID);
--设置值2
SELECT COUNT(1) INTO _USERCOUNT FROM t_sys_users;

--判断游标是否结束,如果结束则离开LOOP
IF(_DONE) THEN
--注意:这里leave的是loop的名字
LEAVE LOOP_USERS;
END IF;
--结束LOOP
END LOOP;

--关闭游标
CLOSE _CUR_USERS;

--业务处理
SELECT _IDSTR;

--存储过程结束
END$$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 存储过程