我正在尝试使用用户定义的表类型将列表传递给数据库(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
答案 0 :(得分:-1)
代码objSqlParameter[3].Value = tbl;
tbl is List<dtIncrementSalary>
但SqlDbType.Structured
将采用表格
建议您转换List<dtIncrementSalary>
中的Datatable
,使其与您在Sql Server中创建的架构相同(dtincrementsalary
)