为SQL中的过程导入多个值
设置: 我目前有两个表,一个是类别表,一个是产品表。 类别有一个ID和它的父级ID,产品也包括它们所属类别的ID 我需要什么 为了减少对数据库的请求量,我希望能够将多个ID导入到过程中,这样就不需要为每个子类别请求产品 问题 有没有可能导入几个值(比如一个矩阵),这样我就可以得到所有的值,或者直接从MySQL创建一个循环来标识所需的类别 例如: 我在使用什么:Microsoft SQL Server和Visual Studio 2010为SQL中的过程导入多个值,sql,sql-server,visual-studio,Sql,Sql Server,Visual Studio,设置: 我目前有两个表,一个是类别表,一个是产品表。 类别有一个ID和它的父级ID,产品也包括它们所属类别的ID 我需要什么 为了减少对数据库的请求量,我希望能够将多个ID导入到过程中,这样就不需要为每个子类别请求产品 问题 有没有可能导入几个值(比如一个矩阵),这样我就可以得到所有的值,或者直接从MySQL创建一个循环来标识所需的类别 例如: 我在使用什么:Microsoft SQL Server和Visual Studio 2010 提前谢谢 您可能希望在Visual Studio中使用结
提前谢谢 您可能希望在Visual Studio中使用结构化数据类型,在SQL Server中使用表类型。您可以在VS代码中构建DataTable,然后将DataTable作为结构化数据类型传递到存储过程中。从那里您可以连接到表类型,从中插入,等等
DataTable dtMyDataTable= new DataTable("dtMyDataTable");
dtMyDataTable.Columns.Add("Val1", typeof(bool));
dtMyDataTable.Columns.Add("Val2", typeof(string));
dtMyDataTable.Rows.Add(Param1, Param2); // Maybe add values in a loop in VS
parameter = new SqlParameter();
parameter.ParameterName = "@MyTableTypeSPParameter";
parameter.SqlDbType = SqlDbType.Structured;
parameter.Value = dtMyDataTable;
cmd.Parameters.Add(parameter);
更多信息:是的,您可以使用用户定义的表类型将数据的“矩阵”传递给存储过程。这也是一个有用的资源:添加一些链接和清晰的内容,这将是一个非常好的答案。