【问题标题】:Error in stored procedure with string return type具有字符串返回类型的存储过程中的错误
【发布时间】:2013-01-02 21:40:26
【问题描述】:
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 时转换失败。

【问题讨论】:

  • 表上有哪些数据类型?

标签: asp.net sql-server stored-procedures


【解决方案1】:

您的代码包含该行

return @uname

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

EXEC dbo.Signin_Check @uid, @password, @uname OUTPUT;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您确定是varchar 列吗?

      @uid varchar(50) / int
      uid = @uid
      

      【讨论】:

        猜你喜欢
        • 2013-06-19
        • 2021-08-11
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 2012-01-09
        相关资源
        最近更新 更多