请高手帮我编写一个存储过程实现用户登陆验证,登陆成功后记录会话信息:
数据表 admin_info(username, password, id)
session_info(username, time_login_in, time_login_out, ip)
设计存储过程实现正确返回1,错误返回0,密码错误返回2,用户不存在返回3proceduce(uname varchar,pword varchar,info int)

解决方案 »

  1.   

    CREATE PROCEDURE Prc_Ad_Login
    @AdName varchar(32),
    @AdPwd nchar(32),
    @Count int output,
    @Err varchar(64) output
     ASif exists(select intsuid from sysuser where varsuname=@AdName)
    begin
     declare @suid int
     declare @dteErrs datetime
     declare @npwd nchar(32)
     declare @Lock bit
     declare @intErr int
     declare @Errpart int
     declare @ErrCount int
     select @suid=intsuid, @dteErrs=dteErr,@intErr=intErrCount,@npwd=narsupwd,@lock=bitLock from sysuser where varsuname=@Adname
     select @ErrCount=intsuerrcount,@Errpart=intsuerrminute from sysbasic
     if(@npwd=@Adpwd)
     begin
      if(@Lock=1)
      begin
       select @Count=2
       select @Err='你的帐户已被锁定,请联系站长!'
      end
      else
      begin
       
       select @Count=0
      end
     end
     else
     begin
      if(@Lock=0)
      begin
       if(datediff(n,@dteErrs,getdate())<@Errpart)
       begin
        if(@intErr<@ErrCount)
        begin
         update sysuser set intErrCount=intErrCount+1,dteErr=getdate() where intsuid=@suid
         if(@intErr=(@ErrCount-1))
         begin
          select @Count=4
          select @Err='登录错误过多,你的帐号被系统暂时锁定!'
         end
         else
         begin
          select @Count=1
          select @Err='用户名或密码错误!'
         end
        end
        else
        begin
         update sysuser set dteErr=getdate() where intsuid=@suid
         select @Count=3
         select @Err='你的帐号在一定时间内不允许登录!'
        end
       end
       else
       begin
        update sysuser set dteErr=getdate(),intErrCount=1 where intsuid=@suid
        select @Count=1
        select @Err='用户名或密码错误!'
       end
      end  
     end
    end
    else
    begin
     select @Count=1
     select @Err='用户名或密码错误!'
    end
    GO自己适当修改一下
      

  2.   

    create proc sp_test(@a int)
    as
    begin
    end