我可以在查询中为EXISTS
分配值吗?目前它在'='附近给出了错误语法错误。但是,当我使用此查询时,它只按预期运行。
IF EXISTS (SELECT @PK_LOGIN_ID=PK_LOGIN_ID FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME AND PASSWORD=@PASSWORD AND FK_ROLE_ID=@FK_ROLE_ID)
RETURN @PK_LOGIN_ID
ELSE
RETURN 0
答案 0 :(得分:2)
RETURN COALESCE(
(
SELECT TOP 1
PK_LOGIN_ID
FROM dbo.M_LOGIN
WHERE LOGIN_NAME = @LOGIN_NAME
AND PASSWORD = @PASSWORD
AND FK_ROLE_ID = @FK_ROLE_ID
), 0)
答案 1 :(得分:1)
答案 2 :(得分:1)
您无法在EXISTS子句中指定变量 一种选择是拆分分配和检查,或者完全删除分配。
SQL声明
IF EXISTS (
SELECT PK_LOGIN_ID
FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME
AND PASSWORD=@PASSWORD
AND FK_ROLE_ID=@FK_ROLE_ID)
SELECT @PK_LOGIN_ID = PK_LOGIN_ID
FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME
AND PASSWORD=@PASSWORD
AND FK_ROLE_ID=@FK_ROLE_ID
ELSE
SET @PK_LOGIN_ID = 0
RETURN @PK_LOGIN_ID
答案 3 :(得分:1)
IF EXISTS (
SELECT PK_LOGIN_ID
FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME
AND PASSWORD=@PASSWORD
AND FK_ROLE_ID=@FK_ROLE_ID)
SELECT @PK_LOGIN_ID = PK_LOGIN_ID
FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME
AND PASSWORD=@PASSWORD
AND FK_ROLE_ID=@FK_ROLE_ID
ELSE
SET @PK_LOGIN_ID = 0
RETURN @PK_LOGIN_ID
答案 4 :(得分:0)
您在检索数据(@PK_LOGIN_ID
)时无法使用exists,因此您需要选择它。
SET @PK_LOGIN_ID = (
SELECT PK_LOGIN_ID FROM dbo.M_LOGIN
WHERE LOGIN_NAME=@LOGIN_NAME AND PASSWORD=@PASSWORD AND FK_ROLE_ID=@FK_ROLE_ID
)
RETURN ISNULL(@PK_LOGIN_ID, 0)
(这假定只有1或0个匹配的行)