Mysql存储过程的基本结构

存储过程的基本结构

  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 _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;
    		
    		--业务处理逻辑
    		SET _IDSTR = CONCAT(IFNULL(_IDSTR,""),"|",_USERID);
    		
    		--判断游标是否结束,如果结束则离开LOOP
    		IF(_DONE) THEN
    		    --注意:这里leave的是loop的名字
    		    LEAVE LOOP_USERS;
    		END IF;
    	--结束LOOP
    	END LOOP;
    	
    --关闭游标
    CLOSE _CUR_USERS;
    
    --业务处理
    SELECT _IDSTR;

--存储过程结束
END$$

转载于:https://my.oschina.net/u/2610965/blog/1359280

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值