[英]Procedure or function has too many arguments specified
关于这个例外,关于SO有很多问题。 但是它们都不对我有用。
这是我的存储过程:
CREATE PROCEDURE HolidayStandardMappingInsert
@HolidayID bigint,
@StandatdID smallint
AS
BEGIN
INSERT INTO HolidayStandardMapping VALUES(@HolidayID,@StandatdID)
END
GO
这是我的代码:
int StdId = 0;
SqlCommand cmdS = new SqlCommand("HolidayStandardMappingInsert", conn);
cmdS.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < cblStandard.Items.Count; i++)
{
if (cblStandard.Items[i].Selected == true)
{
if (StdId == 0)
StdId = Convert.ToInt32(cblStandard.Items[i].Value);
else
StdId = Convert.ToInt32(cblStandard.Items[i].Value);
cmdS.Parameters.AddWithValue("@HolidayID", NewRecordID);
cmdS.Parameters.AddWithValue("@StandatdID", StdId);
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Open();
int res = cmdS.ExecuteNonQuery();
if (res > 0)
{
}
}
}
告诉我缺少了什么?
您正在使用同一个SqlCommnad object
进行多次插入,因此还存在previously
添加的parameters
。
因此,要么在循环内创建一个新的SqlCommnad object
,要么clear
prevoius参数。
这样可以Clear
以前添加的参数。
cmdS.Parameters.Clear();
您正在循环添加参数。 因此,在第二次迭代之后,您的命令具有4个参数。
每次在循环中添加cmdS.Parameters.AddWithValue。 因此,在第一次迭代之后,它已经有2个参数。
进入循环之前,需要通过cmdS.Parameters.Clear()清除命令参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.