存储过程什么都不返回

Phi*_*hil 8 sql t-sql sql-server oop stored-procedures

此存储过程不起作用.我检查了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

Mar*_*ith 7

 @eMail nvarchar
Run Code Online (Sandbox Code Playgroud)

将传入的电子邮件截断为一个字符.你需要加长.例如

  @eMail nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

这应该匹配相关列的数据类型 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
Run Code Online (Sandbox Code Playgroud)

并称之为

DECLARE @salt nvarchar(50)
EXECUTE dbo.GetSaltOfUser N'abc@example.com', @salt OUTPUT
SELECT @salt
Run Code Online (Sandbox Code Playgroud)