从网上看到一个存储过程,其中可以判断是否存在该用户,存在则返回1,否则返回0
ALTER PROCEDURE dbo.IsValidUser 
(
    @userName varchar(50),
    @password varchar(50) OUTPUT
)
AS
    if Exists(Select Id From [User] Where [Name] = @userName)
        Begin
            Select @password = Password From [User] Where [name]= @userName 
            Select 1        -- Ture
        End     
Select 0        -- false我想问一下select 是否跟return是一个意思,这样不需要加
else
select 0就可以实现正确的逻辑了?

解决方案 »

  1.   

    有问题如果找到name,先返回1,然后又select 0 了所以结果总是0
      

  2.   

     Select 1 之后是否就不继续运行后面的语句了?
      

  3.   

    这是基本的语法。if begin...end执行完之后还会继续往下执行的。
    后面还有个select 0 ,所以总返回select 0
      

  4.   

    ALTER PROCEDURE dbo.IsValidUser  
    (
      @userName varchar(50),
      @password varchar(50) OUTPUT
    )
    AS
      if Exists(Select Id From [User] Where [Name] = @userName)
      Begin
      Select @password = Password From [User] Where [name]= @userName  
      Select 1 -- Ture
      End
      else
      Begin
       Select 0 -- false
      end这样就可以返回想要的结果了吧
      

  5.   

    不是,Select能显示查询结果,但return只返回结果,但不显示