是否可以将 ID 集合作为 ADO.NET SQL 参数发送?

2024-02-11

例如。我可以写这样的代码吗:

public void InactiveCustomers(IEnumerable<Guid> customerIDs)
{
    //...
    myAdoCommand.CommandText =
        "UPDATE Customer SET Active = 0 WHERE CustomerID in (@CustomerIDs)";
    myAdoCommand.Parameters["@CustomerIDs"].Value = customerIDs;
    //...
}

我知道的唯一方法是加入我的 IEnumerable,然后使用字符串连接来构建我的 SQL 字符串。


通常,执行此操作的方法是传入以逗号分隔的值列表,然后在存储过程中解析该列表并将其插入到临时表中,然后可以将其用于联接。作为SQL Server 2005,这是处理需要保存数组的参数的标准做法。

这是一篇关于处理此问题的各种方法的好文章:

将列表/数组传递给 SQL Server 存储过程 http://vyaskn.tripod.com/passing_arrays_to_stored_procedures.htm

But for SQL Server 2008,我们最终将表变量传递到过程中,首先将表定义为自定义类型。

本文对此(以及更多 2008 年功能)进行了很好的描述:

SQL Server 2008 中新的 T-SQL 可编程性功能简介 http://technet.microsoft.com/en-us/library/cc721270.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将 ID 集合作为 ADO.NET SQL 参数发送? 的相关文章

随机推荐