通过列表
传统上,将多个项目传递给 SQL 存储过程涉及繁琐的字符串操作和连接由分隔符分隔的 ID。这种方法在性能和灵活性方面可能不是最佳的。然而,随着 SQL Server 2008 的出现,一种名为“表值参数”的新功能作为一种优越的解决方案出现了。
通过利用表值参数,开发人员可以在数据库,然后将该类型的值列表作为单个参数传递给存储过程。这种方法消除了手动字符串连接的需要,并提供了几个好处:
利用表值参数,开发人员需要在数据库中创建用户定义的表类型,然后修改存储过程以接受该类型作为参数。下面的代码片段演示了如何实现此方法:
C# 代码:
public void AddItemsToReport(string connStr, int Id, List<int> itemList) { using (SqlConnection _connection = new SqlConnection(connStr)) { using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection)) { _sqlcommand.CommandType = CommandType.StoredProcedure; _sqlcommand.Parameters.AddWithValue("ReportId", Id); _sqlcommand.Parameters.AddWithValue("Items", itemList); _connection.Open(); _sqlcommand.ExecuteNonQuery(); } } }
SQL 存储过程:
CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray) AS BEGIN -- Insert each item into ReportItem table INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Item FROM @Items END
在此示例中,“IntArray”类型是用户定义的表类型,映射到列表
以上是如何有效地将列表传递给 SQL 存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!