SQL Server 2008 Select 存储过程中的计数和参数值

SQL Server 2008 Select Count and Parameter Value in Stored Procedure

我正在使用 SQL Server 2008,我正尝试先 运行 SELECT COUNT。一旦检查计数是否等于 0,我需要替换特定参数的值。如果计数为一,我需要从 table 中获取值。目前这是我的脚本:

CREATE PROCEDURE [dbo].[csp_LoginAuthentication]
    @employeeid VARCHAR (20),
    @password VARCHAR (20),
    @accountstatus INT OUT,
    @logincount INT OUT
AS
BEGIN
    SET NOCOUNT ON;     

    DECLARE @rowCnt INT    

    SELECT @rowCnt = (SELECT COUNT(*) 
                      FROM strato_blueapplesmis.dbo.app_login
                      WHERE 1 = 1
                        AND employee_id = @employeeid
                        AND password = @password)

    IF @rowCnt = 0
    BEGIN
        SET @accountstatus = 2
        SET @logincount = 0
    END
    ELSE
    BEGIN
        SELECT
            @accountstatus = account_status,
            @logincount = logincount
        FROM 
            strato_blueapplesmis.dbo.app_login
        WHERE 
            1 = 1
            AND employee_id = @employeeid
            AND password = @password
        END
    END         
END

我收到以下错误:

Msg 102, Level 15, State 1, Procedure csp_LoginAuthentication, Line 41
Incorrect syntax near 'END'.

请帮忙,我真的很感谢大家的建议和反馈,我不太确定我是否在正确的轨道上,我觉得我有点迷路。

你的结局太多了。删除其中一个。具体来说:

 ELSE
        BEGIN
            SELECT
                @accountstatus = account_status,
                @logincount = logincount
            FROM strato_blueapplesmis.dbo.app_login
            WHERE 1 = 1
                AND employee_id = @employeeid
                AND password = @password
        END
    END   

else 中有 BEGIN 和 END,不需要额外的 END。你的整个代码是这样的:

CREATE PROCEDURE [dbo].[csp_LoginAuthentication]
    @employeeid VARCHAR (20),
    @password VARCHAR (20),
    @accountstatus INT OUT,
    @logincount INT OUT
AS
BEGIN

    SET NOCOUNT ON;     
    DECLARE @rowCnt INT    
    SELECT @rowCnt = (SELECT COUNT(*) 
                        FROM strato_blueapplesmis.dbo.app_login
                        WHERE 1 = 1
                            AND employee_id = @employeeid
                            AND password = @password)
    IF @rowCnt = 0
        BEGIN
            SET @accountstatus = 2
            SET @logincount = 0
        END
    ELSE
        BEGIN
            SELECT
                @accountstatus = account_status,
                @logincount = logincount
            FROM strato_blueapplesmis.dbo.app_login
            WHERE 1 = 1
                AND employee_id = @employeeid
                AND password = @password
        END      
END  

WHERE 1 = 1还有什么意义?