【问题标题】:Procedure or function has too many arguments specified #2过程或函数指定了太多参数 #2
【发布时间】:2020-06-07 08:36:34
【问题描述】:

您好,我尝试将数据插入数据库,使用类文件。我有两个类,其中一个是 Material.cs 和 DataAccessLayer.cs。但是执行我的代码时,我遇到了错误,例如 Procedure or function sp_insert_componet has too many arguments specified。""

//来自 Material.cs

private string strCREATEDBY;
private string strCREATEDDATE;
private string strUPDATEDBY;
private string strUPDATEDDATE;
private string strSTATUS;

public string Createdby
{
    get
    {
        return strCREATEDBY;
    }
    set
    {
        strCREATEDBY = value;
    }
}
public string Createddate
{
    get
    {
        return strCREATEDDATE;
    }
    set
    {
        strCREATEDDATE = value;
    }
}
public string Updateddate
{
    get
    {
        return strUPDATEDDATE;
    }
    set
    {
        strUPDATEDDATE = value;
    }
}
public string Updatedby
{
    get
    {
        return strUPDATEDBY;
    }
    set
    {
        strUPDATEDBY = value;
    }
}
public string Status
{
    get
    {
        return strSTATUS;
    }
    set
    {
        strSTATUS = value;
    }
}

//Maingroup
//created by : ramya
//created date:15.2.2012
private string strIDENTIFY;
private string strNO;
private string strNAME;
private string strMAINIDENTIFICATION;


public string Identification
{
    get
    {
        return strIDENTIFY;
    }
    set
    {
        strIDENTIFY = value;
    }
}
public string NO
{
    get
    {
        return strNO;
    }
    set
    {
        strNO = value;
    }
}
public string NAME
{
    get
    {
        return strNAME;
    }
    set
    {
        strNAME = value;
    }
}
public string Mainidentify
{
    get
    {
        return strMAINIDENTIFICATION;
    }
    set
    {
        strMAINIDENTIFICATION = value;
    }
}
private string strItemtype;
public string Itemtype
{
    get
    {
        return strItemtype;
    }
    set
    {
        strItemtype = value;
    }
}
private string strSitename;
public string Sitename
{
    get
    {
        return strSitename;
    }
    set
    {
        strSitename = value;
    }
}

public int Savecomponent()
{
    objDL.Addparam("@Createdby", Createdby);
    objDL.Addparam("@Createddate", Createddate);
    objDL.Addparam("@Sitecode", NO);
    objDL.Addparam("@Itemtype", Itemtype);
    objDL.Addparam("@Status", Status);
    objDL.Addparam("@Maingroupsno", Mainidentify);
    objDL.Addparam("@Subgroupsno", Identification);
    objDL.Addparam("@Componetcode",NAME);
    objDL.Addparam("@Sitename", Sitename);
    int save = objDL.insert("sp_insert_componet");
    if (save > 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

//来自DataAccessLayer.cs

public int insert(string strInsert)
{
    try
    {
        Con.Open();
        cmd.Connection = Con;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = strInsert;
        int RetInsert = cmd.ExecuteNonQuery();
        return RetInsert;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    //got error in this finally block

    finally
    {
        Con.Close();
    }
}

【问题讨论】:

标签: c#


【解决方案1】:

您正在指定存储过程不期望的参数。 删除任何未由存储过程定义的参数

确保块中的每个参数

objDL.Addparam("@Createdby", Createdby);
objDL.Addparam("@Createddate", Createddate);
objDL.Addparam("@Sitecode", NO);
objDL.Addparam("@Itemtype", Itemtype);
objDL.Addparam("@Status", Status);
objDL.Addparam("@Maingroupsno", Mainidentify);
objDL.Addparam("@Subgroupsno", Identification);
objDL.Addparam("@Componetcode",NAME);
objDL.Addparam("@Sitename", Sitename);

在存储过程中有对应的参数。删除过程中未定义的任何参数

【讨论】:

  • @TGH 是否有忽略意外参数的机制?
【解决方案2】:

如果参数数量相同,则尝试检查它们的类型。

参数类型必须与表格中的相同

【讨论】:

    【解决方案3】:

    如果使用不同的数据库环境,请检查您的数据库连接。

    我遇到了这个问题,因为我的配置文件指向了错误的数据库,该数据库具有相同的 SP 不同的参数。

    【讨论】:

      【解决方案4】:

      问题是您在存储过程sp_insert_componet 中定义的输入参数较少。

      将 C# 代码中的参数数量与存储过程中的参数数量进行比较。

      【讨论】:

        【解决方案5】:

        不,即使参数完全相同,在 SQL Server 上的存储过程中的 SQL INSERT 的情况下,您也会收到此错误。

        事实证明,您还必须在存储过程中为要插入新记录的表的 PRIMARY KEY 定义一个参数。在我的情况下,@CompanyID 没有作为参数传递,但没有定义它,就会发生“参数太多”错误。如果有帮助的话,CompanyID 字段的“identity”设置为“true”,它会随着每条新记录而增加。

        改变程序 [dbo].[FormViewCompanies_Insert](

        @CompanyID 为 INT。 /* 不作为参数传递 */

        @MemberID AS INT, /* 作为参数传递 / @ChapterID AS INT, / 作为参数传递 */ ...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-28
          • 2019-10-07
          • 2013-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多