这个 SQL 服务器存储过程有什么问题?
What's wrong with this SQL Server stored procedure?
我正在尝试编写一个程序,在我的 table 成员中搜索输入用户名和密码的匹配成员。如果找到匹配项,它应该输出 1。
这是我的代码:
CREATE PROC LoginProcedure
@email varchar(50),
@password varchar(50),
@found bit output
AS
IF(EXISTS(SELECT *
FROM Members
WHERE email = @email AND password = @password))
BEGIN
@found = 1; ---HERE
END
ELSE
BEGIN
@found = 0; ----HERE
END
GO ---HERE
我已经在我遇到错误的所有行旁边添加了评论。所有 3 行的错误都相同。
Incorrect Syntax
SQL服务器使用set
或select
赋值:
CREATE PROCEDURE LoginProcedure (
@email varchar(50),
@password varchar(50),
@found bit output
)
AS BEGIN
IF (EXISTS (SELECT * FROM Members where email = @email and password = @password
))
BEGIN
SET @found = 1; ---HERE
END;
ELSE BEGIN
SELECT @found = 0; ----HERE
END;
END; -- LoginProcedure
我认为将其写成 case
语句会更简单:
BEGIN
SET @found = (CASE WHEN EXISTS (SELECT * FROM Members where email = @email and password = @password)
THEN 1 ELSE 0
END);
END;
我正在尝试编写一个程序,在我的 table 成员中搜索输入用户名和密码的匹配成员。如果找到匹配项,它应该输出 1。
这是我的代码:
CREATE PROC LoginProcedure
@email varchar(50),
@password varchar(50),
@found bit output
AS
IF(EXISTS(SELECT *
FROM Members
WHERE email = @email AND password = @password))
BEGIN
@found = 1; ---HERE
END
ELSE
BEGIN
@found = 0; ----HERE
END
GO ---HERE
我已经在我遇到错误的所有行旁边添加了评论。所有 3 行的错误都相同。
Incorrect Syntax
SQL服务器使用set
或select
赋值:
CREATE PROCEDURE LoginProcedure (
@email varchar(50),
@password varchar(50),
@found bit output
)
AS BEGIN
IF (EXISTS (SELECT * FROM Members where email = @email and password = @password
))
BEGIN
SET @found = 1; ---HERE
END;
ELSE BEGIN
SELECT @found = 0; ----HERE
END;
END; -- LoginProcedure
我认为将其写成 case
语句会更简单:
BEGIN
SET @found = (CASE WHEN EXISTS (SELECT * FROM Members where email = @email and password = @password)
THEN 1 ELSE 0
END);
END;