此存储过程不起作用。我检查了SQL,并在直接解析到DB时返回正确的值。真奇怪啊!它只返回0行。
可能出现什么问题?
ALTER PROCEDURE dbo.GetSaltOfUser ( @eMail nvarchar ) AS DECLARE @result nvarchar /* SET NOCOUNT ON */ BEGIN SELECT @result = salt FROM UserSet WHERE eMail = @eMail RETURN @result END
答案 0 :(得分:7)
@eMail nvarchar
将传入的电子邮件截断为一个字符。你需要加长。例如
@eMail nvarchar(50)
这应与UserSet
你真的想要使用返回代码吗?或者你想使用output parameter
或者只是标量选择?
ALTER PROCEDURE dbo.GetSaltOfUser
(
@eMail nvarchar (50), /*Should match datatype of UserSet.eMail*/
@salt nvarchar (50) OUTPUT /*Should match datatype of UserSet.salt*/
)
AS
BEGIN
SET NOCOUNT ON
SELECT @result = salt
FROM UserSet
WHERE eMail = @eMail
END
并称之为
DECLARE @salt nvarchar(50)
EXECUTE dbo.GetSaltOfUser N'abc@example.com', @salt OUTPUT
SELECT @salt
答案 1 :(得分:1)
您无需将salt
分配给变量。
CREATE PROCEDURE dbo.GetSaltOfUser
(
@eMail nvarchar
)
AS
BEGIN
SELECT salt
FROM UserSet
WHERE eMail = @eMail
END
答案 2 :(得分:1)
我最后两分钱