CREATE PROCEDURE [dbo].[CheckLogin] 
                  @WhId varchar(50),
                  @LoginId varchar(50),
                  @Password varchar(50),
                  @EmpId varchar(50)='' output,
                  @Computer varchar(50),
                  @Ip varchar(50)
ASset nocount ondeclare @IsUse bit,@IsAdmin bit,@ErrorMsg varchar(50),@IsLogin bit
...

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[CheckLogin] 
                      @WhId varchar(50),
                      @LoginId varchar(50),
                      @Password varchar(50),
                      @EmpId varchar(50)='' output,
                      @Computer varchar(50),
                      @Ip varchar(50)
    AS
    set nocount on
    declare @IsUse bit,@IsAdmin bit,@ErrorMsg varchar(50),@IsLogin bitset @IsUse=0
    set @IsAdmin=0
    set @IsLogin=0begin
    select @IsAdmin=IsAdmin,@EmpId=EmpId,@IsUse=IsUse from sys_user where LoginId=@LoginId and Password=@Password
    if (select @@RowCount)=0
       set @ErrorMsg='用户名(%s)或密码有误,登陆失败!'
    else if @IsUse=0
       set @ErrorMsg='用户(%s)已被禁用,登陆失败!'
    else if @IsAdmin=1
       set @IsLogin=1
    else if Not exists(select 1 from sys_whuser where WhId=@WhId and UserId=@LoginId)
       set @ErrorMsg='用户(%s)没有登陆该操作点(%s)的权限,请向管理员询问!'
    else
       set @IsLogin=1insert into sys_loginlog (loginid,placeid,computer,ip,islogin,note) values (@LoginId,@WhId,@Computer,@Ip,@IsLogin,@ErrorMsg)
    RaisError(@ErrorMsg,16,1,@LoginId,@WhId)
    set nocount off
    end
    go
      

  2.   

    能否解释一下RaisError的功能啊!
    up
      

  3.   

    返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。