Mysql存储过程的基本结构

来源:互联网 发布:js 删除cookies 编辑:程序博客网 时间:2024/06/08 02:26

存储过程的基本结构

  1. 删除原有存储过程
  2. 设置DELIMITER
  3. 创建存储过程
  4. 设置DELIMITER
--删除原有存储过程DROP PROCEDURE IF EXISTS `testCursor`;--设置新的DELIMITER,以便在存储过程中使用“;”DELIMITER $$--创建存储过程CREATE PROCEDURE testCursor()BEGIN    ....END $$--设置DELIMITER,改回“;”DELIMITER ;

存储过程主体中的顺序

  1. 定义局部变量
  2. 为局部变量赋值
  3. 定义游标
  4. 定义处理程序
  5. 打开游标
  6. 定义LOOP
  7. 将游标值赋值到局部变量
  8. 业务处理逻辑
  9. 判断游标是否结束,如果游标结束则离开LOOP
  10. 结束LOOP
  11. 关闭游标
--存储过程开始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$$