[英]Storing a Result (OUTPUT) from a stored procedure into a Gridview c# ASP.Net
I am trying to return the Average value that is generated by a stored procedure into a new column in the Gridview 我试图将存储过程生成的平均值返回到Gridview中的新列中
What should I put instead of the "!!!!" 我应该用什么代替“ !!!!” in my code below 在下面的代码中
I keep getting "Stored procedure expects parameter which was not supplied" Error although I defined that parameter as OUTPUT in the procedure (BELOW) 我不断收到“存储过程期望未提供的参数”的错误,尽管我在过程中将该参数定义为OUTPUT(以下)
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridView1.Columns[3].Visible = true;
string Teachername = GridView1.SelectedRow.Cells[1].Text;
string connStr = ConfigurationManager.ConnectionStrings["MS4ConnectionString"].ToString();
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand("Overall_Rating", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter Parent_Username = new SqlParameter("@parent_username", TextBox1.Text);
SqlParameter Teacher_Username = new SqlParameter("@teacher_username", Teachername);
SqlParameter Avg = new SqlParameter("@Avg", !!!!);
Avg.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(Parent_Username);
cmd.Parameters.Add(Teacher_Username);
cmd.Parameters.Add(Avg);
string retunvalue = (string)cmd.Parameters["@Avg"].Value;
System.Diagnostics.Debug.WriteLine(retunvalue);
conn.Open();
cmd.ExecuteNonQuery();
}
@parent_username varchar(40), @teacher_username varchar(40), @Avg smallint output AS SET @Avg = ( select Avg(PRT.rating) FROM Parents_Rate_Teachers PRT INNER JOIN Employees_Name E ON PRT.teacher_username = E.employee_username WHERE E.employee_username= @teacher_username ) return @Avg @parent_username varchar(40),@ teacher_username varchar(40),@ Avg smallint输出AS SET @Avg =(select Avg(PRT.rating)FROM Parents_Rate_Teachers PRT INNER JOIN Employees_Name E ON PRT.teacher_username = E.employee_username WHERE E.employee_username = @teacher_username)返回@Avg
I think you just want ParameterDirection.Output instead of ReturnValue: 我认为您只需要ParameterDirection.Output而不是ReturnValue:
SqlParameter avg= new SqlParameter();
avg.ParameterName = "@Avg";
avg.Direction = ParameterDirection.Output;
cmd.Parameters.Add(avg);
There are also problem in row (in addition to previous answer) 行中也有问题(除了以前的答案)
string retunvalue = (string)cmd.Parameters["@Avg"].Value;
you should return int, because @Avg is smallint (smallint = Int16): 您应该返回int,因为@Avg是smallint(smallint = Int16):
int retunvalue = (int)cmd.Parameters["@Avg"].Value;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.