存储过程什么都不返回

时间:2010-10-15 22:59:04

标签: sql sql-server tsql stored-procedures oop

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

3 个答案:

答案 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)

我最后两分钱

  • 您正在使用SET NOCOUNT ON
  • 始终使用RETURN返回状态代码,示例0-成功,1 - 失败
  • 使用SELECT返回ROWS
  • 使用Try Catch处理错误条件