/*
Fun : 用户登陆验证.若密码加密,则由客户端实现
Author : **
CreateTime : 2005-12-23
*/CREATE PROCEDURE pro_UserCheck
         @userID           as varchar(50),
         @passWord     as varchar(50),
        @sort                 as int,
          
       
         
         @addr       as varchar output,
         @phone      as varchar output,
         @userState   as int output,
          @userSort       as int output,
          @rpt                 as int output                            --0为登陆失败,1为登陆成功
 AS
Begin 
           Select @userSort = UserSort,@userState=UserState,@addr=Addr,@phone=Phone
           From tbl_UserInfo
           Where UserID = @userID
                        And [Password] = @passWord
                       And UserState = 2 or      UserState = 1                          --2为通过审核并且帐号启用
         --And userSort=@sort
      And userSort<>3

            IF @@rowcount <= 0  
            Begin
                       IF ISNULL(@addr,'') = '' or ISNULL(@phone,'') = '' 
                       Begin 
                       Set  @rpt = 0
                       End
                       Else
                       Begin
                       Set @rpt = 1
                       End 
            Else
            Begin
                  update tbl_userInfo set userstate=2  Where UserID = @userID
              Set @rpt = 1
            End
End
GO
 本人菜鸟,这段存储过程语法上有错误,IF嵌套语句我可能没写对,请大家给指点一下

解决方案 »

  1.   


    /*
    Fun        : 用户登陆验证.若密码加密,则由客户端实现
    Author        : **
    CreateTime    : 2005-12-23
    */CREATE PROCEDURE pro_UserCheck
             @userID           as varchar(50),
             @passWord     as varchar(50),
            @sort                 as int,
              
           
             
             @addr       as varchar output,
             @phone      as varchar output,
             @userState   as int output,
              @userSort       as int output,
              @rpt                 as int output                            --0为登陆失败,1为登陆成功
     AS
    Begin 
               Select @userSort = UserSort,@userState=UserState,@addr=Addr,@phone=Phone
               From tbl_UserInfo
               Where UserID = @userID
                            And [Password] = @passWord
                           And UserState = 2 or      UserState = 1                          --2为通过审核并且帐号启用
                 --And userSort=@sort
                 And userSort<>3
        
                IF @@rowcount <= 0  
                Begin
                           IF ISNULL(@addr,'') = '' or ISNULL(@phone,'') = '' 
                           Begin 
                           Set  @rpt = 0
                           End
                           Else
                           Begin
                           Set @rpt = 1
                           End 
                END--此处少一个end           
                Else
                Begin
                      update tbl_userInfo set userstate=2  Where UserID = @userID
                     Set @rpt = 1
                End
    End
    GO
      

  2.   

    IF @@rowcount <= 0  
                Begin
    之后没有END
      

  3.   

    让大家见笑了,马虎了
    还有一个问题 我asp代码userState=Cint(cmd.Parameters("@userState").Value)
                        userSort=Cint(cmd.Parameters("@userSort").Value) 为什么老提示Cint溢出呢
      

  4.   


    断点跟踪下cmd.Parameters("@userSort").Value 是多少。
    Cint的范围 是 cint范围 -32,768 到 32,767