同时传递TVP到一个存储过程,我得到错误表值参数
我的代码是
SqlConnection con=new SqlConnection();
con.Open();
SqlCommand cmd=new SqlCommand("SPName",con);
DataTable dataTable = new DataTable("vpTableGuid");
dataTable.Columns.Add("id1", typeof(Guid));
dataTable.Columns.Add("rowNum", typeof(Int32));
dataTable.Rows.Add(Guid.NewGuid(),1);
dataTable.Rows.Add(Guid.NewGuid(),2);
dataTable.Rows.Add(Guid.NewGuid(),3);
SqlParameter param = new SqlParameter("@evaluatorList", dataTable);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.vpTableGuid";
command.Parameters.Add(param);
command.ExecuteNonQuery();
上面的代码抛出一个错误:
INSERT into an identity column not allowed on table variables.
The data for table-valued parameter "@evaluatorList" doesn't conform to the table type of the parameter.
你能告诉我们你的存储过程的定义吗?很显然,存储过程期望的内容与您如何从C#调用它之间存在差异...... –
看起来您正试图在作为标识的列中插入值。什么类型的专栏是你的“id1”? – Romo
如果您也可以显示'vpTableGuid'的定义,这将有所帮助。 –