mysql 短信验证存储过程

自己写的mysql 短信验证的存储过程

大家可以看看

不懂的留言

CREATE PROCEDURE `ver_SMS_SEND`
(
in yzm VARCHAR(6),
in sjhm VARCHAR(11)
)
BEGIN
	declare flag VARCHAR(255); -- 验证状态
	declare done int; -- 辅助游标变量
	declare _yzm varchar(6); -- 验证码
	declare _sjhm varchar(11); -- 手机号码
	declare _time datetime; -- 生成时间
	declare _state varchar(2); -- 状态
	declare _context varchar(255);
	declare count int ;
	DECLARE cur_sms CURSOR FOR SELECT yzm,sjhm,create_time,state,state_text  FROM sms as s WHERE s.yzm = yzm and s.sjhm=sjhm;
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
	set count = 0;
	OPEN cur_sms;
	cursor_loop:loop
		FETCH cur_sms into _yzm, _sjhm, _time,_state,_context; -- 取数据
		if (done=1) then -- 游标为空离开loop
			if(count = 0) then -- 如果count==0 且 qie==1说明游标一开始就为空标记flag=1
				SET flag = "验证码错误";
			end if;
			leave cursor_loop;
		else
			if(_state=1) then
				SET flag = _context;
			else 
				if(TIMESTAMPDIFF(MINUTE,_time,now())>5) then -- 大于5分钟验证码过期
					SET flag ='验证码已过期';
					UPDATE sms s SET s.update_time= now(),s.state='1',s.state_text='验证码已过期' WHERE s.yzm = yzm and s.sjhm=sjhm; 
				else 
						SET flag = '0';
						UPDATE sms s SET s.update_time= now(),s.state='1',s.state_text='验证码已使用' WHERE s.yzm = yzm and s.sjhm=sjhm; 
				end if;
			end if;
		end if;
		set count=count+1;
	end loop cursor_loop;
	CLOSE cur_sms;
	SELECT flag;
END

CALL test('','') ;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值