如何将存储过程的结果存储到变量中?这是我的示例代码:
public ActionResult ManageProfile(string eid)
{
var vm = new ManageProfileViewModel(); // Call ViewModel
sp_GetUserDetails_Result gResult = db_RIRO.sp_GetUserDetails(Session["EID"].ToString()).First();
// Get UserId, FirstName, LastName from stored procedure result
gResult.UserId = vm.UserId;
gResult.FirstName = vm.FirstName;
gResult.LastName = vm.LastName;
return View(vm);
}
当我在Management Studio中手动尝试执行存储过程时,该存储过程工作正常。我的代码的问题是执行后返回了null
。
答案 0 :(得分:2)
分配变量应该是另一种方式。
vm.FirstName = gResult.SAPID
代替
gResult.SAPID = vm.FirstName
。
答案 1 :(得分:0)
很难不看存储过程就告诉您。 确保您的存储过程具有输出参数。
例如,如果存储过程中有一个输出变量“ @userId”: 类似于您的代码:
sqlcmd.Parameters.Add("@userId", SqlDbType.NVarChar, 4000).Value = "";
sqlcmd.Parameters["@userId"].Direction = ParameterDirection.Output;using
using (SqlConnection conn = new SqlConnection(dbConnStr))
{
sqlcmd.Connection = conn;
conn.Open();
sqlcmd.ExecuteNonQuery();
conn.Close();
if(sqlcmd.Parameters["@userId"].SqlValue.ToString() != "Null")
{
gResult.UserId = sqlcmd.Parameters["@userId"].SqlValue.ToString();
}
}
希望此伪代码对您有帮助。