尝试检索返回值时出错



我尝试执行SQL Server 2008存储过程以获取返回值,我使用以下代码:

 var conString = System.Configuration.ConfigurationManager.ConnectionStrings["cn"];
 string strConnString = conString.ConnectionString;
 using (SqlConnection cn = new SqlConnection(strConnString))
 using (SqlCommand cmd = cn.CreateCommand())
 {
  cmd.CommandText = "DicRegisterUser";
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.AddWithValue("@UserDeviceKey", UserDeviceKey);
  cmd.Parameters.AddWithValue("@UserFullName", UserFullName);
  cmd.Parameters.AddWithValue("@UserEmail", UserEmail);
  //cmd.Parameters.AddWithValue("@PBKey", "");
      var returnParam = new SqlParameter
  {                 
    ParameterName = "@PBKey",                   
    SqlDbType = SqlDbType.NVarChar,
    Direction = ParameterDirection.Output,
    Size = 50                            
  };                
  cmd.Parameters.Add(returnParam);
  cn.Open();
  cmd.ExecuteNonQuery();
  cn.Close();               
  return  (string)cmd.Parameters["@PBKey"].Value;
}

还有存储过程:

return a nvarchar (50)

但是我收到此错误:

其他信息:转换 nvarchar 时转换失败 值'669BA3A1-4172-467C-989F-1F140E9407B7'为数据类型int。

SQL Server 中的存储过程不能使用Varchar(50)值作为其返回类型。存储过程始终返回一个INT,指示调用是否成功,或者受影响的行数(对于 INSERTDELETEUPDATE 语句)。

您可以将类型 VARCHAR(50)OUTPUT 参数设置为您想要的任何值(我希望您已经在这样做了!),但您不能在 RETURN ... 语句中使用该VARCHAR(50)

似乎参数

@UserDeviceKey被定义为将整数值作为输入,但是,您正在传递唯一标识符作为参数

相关内容

  • 没有找到相关文章

最新更新