如何传递列表<>到存储过程

时间:2016-02-26 11:57:39

标签: c# sql asp.net sql-server-2008-r2

我正在尝试使用用户定义的表类型将列表传递给数据库(SQL Server 2008 R2),但是我的代码出现了一些错误:

public int DAL_SaveIncramentSalary(tbl_Employee_Master obj, List < dtIncrementSalary > tbl) {
    try {
        SqlParameter[] objSqlParameter = new SqlParameter[4];
        objSqlParameter[0] = new SqlParameter("@Company_ID", obj.Company_ID);
        objSqlParameter[1] = new SqlParameter("@Employee_ID", obj.Employee_ID);
        objSqlParameter[2] = new SqlParameter("@Salary_Month", obj.Govt_DA);
        objSqlParameter[3] = new SqlParameter("@dt", SqlDbType.Structured);
        objSqlParameter[3].Value = tbl;
        objSqlParameter[3].Direction = ParameterDirection.Input;
        DataSet fdd = SqlHelper.ExecuteDataset(_cnnString2, "usp_Insert_Increment_Salary_List", CommandType.StoredProcedure, bjSqlParameter);
        DataSet fddd = SqlHelper.ExecuteDataset(_cnnString2, "usp_Insert_Increment_Salary_List", objSqlParameter);
        DataSet ds = SqlHelper.ExecuteDataset(_cnnString2, CommandType.StoredProcedure, "usp_Insert_Increment_Salary_List", objSqlParameter);
        return SqlHelper.ExecuteNonQuery(_cnnString2, CommandType.StoredProcedure, "usp_Insert_Increment_Salary_List", objSqlParameter);
    } catch (Exception ex) {
        throw new Exception(ex.Message);
    }
}

我得到这样的错误:

  

数据集dff错误:参数计数与参数值计数不匹配。 DataSet fddd error:ailed to转换List 1 to a IEnumerable 1中的参数值。 DataSet ds错误:无法从列表1 to a IEnumerable转换参数值。

SQL Server用户定义类型

CREATE type dtincrementsalary AS TABLE
(
    head_id INT NULL, 
    salamt NUMERIC(18,2) NULL, 
    per FLOAT NULL, 
    oldsalamt NUMERIC(18,2) NULL,  
    oldper FLOAT NULL 
) sql PROCALTER

PROCEDURE [DBO].[Usp_insert_increment_salary_list] ( @Company_ID  INT, 
                                                    @Employee_ID  INT, 
                                                    @Salary_Month INT, 
                                                    @dt DTINCREMENTSALARY readonly ) 
AS 
BEGIN 
  SELECT * 
  FROM   @dt 
END

1 个答案:

答案 0 :(得分:-1)

代码objSqlParameter[3].Value = tbl;

中的问题

tbl is List<dtIncrementSalary>SqlDbType.Structured将采用表格

建议您转换List<dtIncrementSalary>中的Datatable,使其与您在Sql Server中创建的架构相同(dtincrementsalary