下午自己寫的,公司產品用到,第一次寫儲存過程。發上來程式碼。不做詳細解釋,有疑問可以問我。
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 ;
写评论
很抱歉,必須登入網站才能發佈留言。