我有一个存储过程,它接受用户定义的表类型和默认值,用户定义的数据类型设置为空。 现在我传递一个dataTable与较少的列从存储过程从C#代码希望其余列的值将设置为null。如何在SQL Server中用户定义的表类型将所有列的默认值设置为空时将少列的DataTable传递给存储过程
但是我得到这个错误: 尝试传递一个表值参数与21列(s),其中相应的用户定义的表类型需要77列(s)。 这是代码
SqlConnection conn = new SqlConnection("server=****; database=***;integrated security=SSPI");
DataSet dataset=new DataSet();
conn.Open();
SqlCommand cmd = new SqlCommand("Insert");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter para = new SqlParameter();
para.ParameterName = "@TableVar";
para.SqlDbType = SqlDbType.Structured;
//SqlParameter para=cmd.Parameters.AddWithValue("@TableVar",table);
para.Value = table;
cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
我假设您需要传递完整的表并将77-21列的所有默认字段设置为'DBNull'。 –
有没有其他选择,因为我想在这个表中插入evry隔日和每次我必须使用不同的列,所以添加空约50列不好听 –
为什么不创建在C#表中77列,只是使用您需要的列,其余列将为空或空,而无需将它们手动设置为空。 –