Sql 无法创建存储过程。在选择列表中只能指定一个表达式

Sql 无法创建存储过程。在选择列表中只能指定一个表达式,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我想创建一个存储过程,根据用户登录凭据返回特定的整数值。出现以下错误: 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式 这是我的疑问: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE Login -- Add the parameters for the stored procedure here @userName nvarchar(100), @password nv

我想创建一个存储过程,根据用户登录凭据返回特定的整数值。出现以下错误:

当子查询未引入EXISTS时,只能在选择列表中指定一个表达式

这是我的疑问:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE Login 
    -- Add the parameters for the stored procedure here
    @userName nvarchar(100),
    @password nvarchar(100)
AS
BEGIN

    SET NOCOUNT ON;

   IF((Select COUNT(*) as Count FROM SimpleSite.dbo.Users WHERE UserName = @userName)=1)
      BEGIN
       IF((SELECT * FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
       -- valid login 
       RETURN 1
       ELSE       
       -- wrong password      
       RETURN 2
      END           
   ELSE
       -- No account associated with the username 
       RETURN 3          
END
GO
我怎样才能克服这个问题

   IF((SELECT * FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
这将不等于1,它将返回该行的所有字段

换成这个

   IF((SELECT count(*) FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
这将不等于1,它将返回该行的所有字段

换成这个

   IF((SELECT count(*) FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)

请试着给你反馈

IF EXISTS((Select COUNT(1) as Count FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
      BEGIN
       IF((SELECT COUNT(1) FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
       -- valid login 
       RETURN 1
       ELSE       
       -- wrong password      
       RETURN 2
      END           
   ELSE
       -- No account associated with the username 
       RETURN 3  

请试着给你反馈

IF EXISTS((Select COUNT(1) as Count FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
      BEGIN
       IF((SELECT COUNT(1) FROM SimpleSite.dbo.Users WHERE UserName = @userName AND [Password] = @password)=1)
       -- valid login 
       RETURN 1
       ELSE       
       -- wrong password      
       RETURN 2
      END           
   ELSE
       -- No account associated with the username 
       RETURN 3  

你有两个选择。其中一种方法有什么不同吗?你有两种选择。有什么不同的方法吗?谢谢,伙计。我的错我没看见this@chrisBintCount(*)比Count(1)花费更多的时间。为什么不在本例中使用Count(1)query@A.Goutam-至少在SQL Server 2005之后,这种情况就不再存在了-请参阅“谢谢mate”。我的错我没看见this@chrisBintCount(*)比Count(1)花费更多的时间。为什么不在本例中使用Count(1)query@A.Goutam-至少自SQL Server 2005以来,这种情况一直没有出现-请参阅