C# 过程或函数需要未提供的参数

C# 过程或函数需要未提供的参数,c#,sql-server,C#,Sql Server,我调用了一个用SQLServer2008编写的简单存储过程,参数来自c#,但它显示错误 “过程或函数'AddYear'需要参数'@mYear',但未提供该参数。” 这段代码有什么问题,我尝试了几件事,但都没有成功 SqlCommand AddEquip = new SqlCommand("AddYear", dbConn); SqlDataReader rdrEquip; SqlParameter mP = new SqlParameter("@mYear",SqlDb

我调用了一个用SQLServer2008编写的简单存储过程,参数来自c#,但它显示错误 “过程或函数'AddYear'需要参数'@mYear',但未提供该参数。”

这段代码有什么问题,我尝试了几件事,但都没有成功

    SqlCommand AddEquip = new SqlCommand("AddYear", dbConn);
    SqlDataReader rdrEquip;

    SqlParameter mP = new SqlParameter("@mYear",SqlDbType.VarChar ) ;

    mP.Value = "1990";

    AddEquip.Parameters.Add(mP);


    rdrEquip = AddEquip.ExecuteReader();  

--参数名称和类型与我在过程中使用的相同。

您需要将参数添加到SqlParameter中,例如:

mP = new SqlParameter("@mYear", SqlDbType.VarChar, PARAMETER_HERE);

如果StoredProcess需要参数,则必须将其传递给sqlcommand对象

 SqlParameter[] param = new SqlParameter[0];
            param[0] = new SqlParameter("@mYear", "1990");
rdrEquip = SqlHelper.ExecuteReader(Con, CommandType.StoredProcedure, "SPC_proc", param);


我在这里使用sqlhelper类。

似乎您忘记将
SqlCommand
设置为存储过程:

SqlCommand AddEquip = new SqlCommand("AddYear", dbConn);
AddEquip.CommandType = CommandType.StoredProcedure;

他们正在设置下一行中的值。根据文档,应该可以正常工作: