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

一个Mysql的存储过程

2009-02-04 18:25 232 查看
下午自己写的,公司产品用到,第一次写存储过程。发上来代码。不做详细解释,有疑问可以问我。

 

 
DELIMITER $$

DROP PROCEDURE IF EXISTS `tsts_user`.`proc_login`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_login`(id varchar(50), pwd varchar(255), pTypeUser int, ServerIP varchar(20), ip varchar(50), out result int)
begin

#返回记录
#declare ploginid varchar(50);
set @ploginid = null;
set @ppwd = null;
set @pUserType = null;
set @pEndTime = null;
set result = null;

select @ploginid:=`loginid` ,@ppwd:=`password`,@pUserType:=ptype,@pEndTime:=endtime,name,groupname,area,notlogin,validdate,
viewnews,viewgp,viewqh,viewwp,viewwh,viewgg,userlevel, memo,viewgp_max,viewqh_max,viewwp_max,
viewwh_max,viewgg_max,usercfg,begintime,usedtotaltime,
isonline,serverip from product p where loginid=id;

#如果帐户不存在
if(@ploginid is null) then
set result = 1;
else
#如果帐户存在,但是密码不正确
if(@ppwd is null or @ppwd != pwd) then
set result = 2;
else
#如果帐户存在,并且密码正确,但是过期了
if(@pEndTime is null or now() > @pEndTime) then
set result = 3;
else
#如果帐户存在、密码正确、没过期,但是登录类型不正确
if(@pUserType is null or pTypeUser not in (0, 16, 18, @pUserType)) then
set result = 4;
else
##全部正确,进行更新
update product set last_access_time=now(),login_times=login_times+1,isonline=1,serverip=ServerIP,last_access_ip=ip where loginid=id;
end if;
end if;
end if;
end if;

#如果result为空则改变成为0
if(result is null) then
set result = 0;
end if;

end$$

DELIMITER ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息