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
还有什么意义?
我正在使用 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
还有什么意义?