0
ALTER PROCEDURE [dbo].[Signin_Check] 
    @uid varchar(50), @pwd varchar(50), @uname varchar(50) output
AS
   IF EXISTS (SELECT * FROM threeLayer_user WHERE uid = @uid and pass = @pwd)
   BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

      SELECT @uname = name 
      FROM threeLayer_user 
      WHERE uid = @uid and pass = @pwd

      RETURN @uname
   END

此存储过程引发错误:

将 varchar 值“Saurav”转换为数据类型 int 时转换失败。

4

3 回答 3

6

您的代码包含该行

return @uname

return 语句只能接受整数值。但是,您的 @uname 参数是一个输出参数,因此您不需要也返回它。只需确保OUTPUT在调用 sproc 时指定:

EXEC dbo.Signin_Check @uid, @password, @uname OUTPUT;
于 2013-01-02T21:54:59.853 回答
0

SP 似乎没有与错误相关的错误代码,您能否检查好传递给存储过程的参数(即它们的顺序和类型)?问题可能是您传递的值,而不是实际过程。

您能否将调用存储过程时使用的代码附加到您的帖子中?

于 2013-01-02T21:45:19.503 回答
0

你确定它是varchar专栏吗?

@uid varchar(50) / int
uid = @uid
于 2013-01-02T21:48:20.287 回答