将表值参数列表传递给 SQL 存储过程
使用与特定记录关联的多个项目填充数据库表的场景是数据处理中的一个常见挑战。虽然传统方法涉及迭代传递参数值或使用字符串操作,但可以使用更有效的解决方案。
解决方案:SQL Server 2008 中的表值参数
SQL Server 2008 年引入了表值参数,它允许将结构化数据集合作为参数传递给存储过程。这消除了复杂的字符串操作或迭代参数处理的需要。
在提供的代码中,可以更新“AddItemsToReport”存储过程以接受表值参数:
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items END
项目列表的自定义表格类型
要为项目列表创建自定义表格类型,请执行以下 SQL 语句:
CREATE TYPE ItemList AS TABLE ( Id int )
从 C# 传递表值参数
在 C# 代码中,创建自定义表类型的实例:
var itemList = new ItemList(); itemList.Rows.Add(1); itemList.Rows.Add(2); itemList.Rows.Add(3);
然后,将表值参数传递给存储的过程:
dbCommand.AddInParameter(dbCommand, "Items", DbType.Object, itemList);
表值参数的好处
以上是表值参数如何提高 SQL 存储过程性能和代码简洁性?的详细内容。更多信息请关注PHP中文网其他相关文章!