过程或函数指定了太多参数

时间:2016-05-31 06:57:37

标签: c# asp.net stored-procedures

关于此异常的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)
                        {

                        }
                    }
                }

告诉我缺少什么?

3 个答案:

答案 0 :(得分:3)

您使用相同的 $( '[name="mytax"]' ).change(function() { //add here your formula }); 进行多次插入,因此SqlCommnad object添加了previously也存在。

因此要么创建一个新的parameters内部循环,要么SqlCommnad object prevoius参数。

这是clear以前添加参数的方法。

Clear

答案 1 :(得分:2)

您正在循环中添加参数。 所以在第二次迭代之后,你的命令有4个参数。

答案 2 :(得分:0)

每次在循环中添加cmdS.Parameters.AddWithValue。所以在第一次迭代之后,它已经有2个参数。

在进入循环之前,您需要通过cmdS.Parameters.Clear()清除命令参数。