小编Anu*_*ole的帖子

当 SQL Server 中用户定义的表类型将所有列的默认值设置为 null 时,如何将列数较少的 DataTable 传递给存储过程

我有一个存储过程,它接受用户定义的表类型,并且用户定义的数据类型中所有列的默认值设置为 null。现在,我将一个包含较少列的 dataTable 从 C# 代码传递给存储过程,期望剩余列的值将设置为 null。

但我收到此错误:尝试传递具有 21 列的表值参数,而相应的用户定义表类型需要 77 列。这是代码

  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();
Run Code Online (Sandbox Code Playgroud)

c# sql-server-2008 table-valued-parameters

5
推荐指数
1
解决办法
6234
查看次数