【发布时间】:2012-12-05 23:19:27
【问题描述】:
在项目中,我们多次将 ID 列表从 UI 传递到存储过程。大多数解决方案都基于创建 sql 字符串拆分函数,该函数创建临时表并使用临时表执行一些内部连接器。等等
有没有人有创建CLR SQL UDT的经验一些我们可以传递给用户proc的StringList
StringList stringList = new StringList();
stringList.Add("ID1");
stringList.Add("ID2");
stringList.Add("ID3");
SqlCommand cmd = new SqlCommand("SelectDataByIDs");
cmd.Parameters.Add(new SqlParameter("list", SqlDbType.Udt){ Value = stringList});
并在 SQL 中使用
SELECT * FROM DataTable
WEHRE DataId in @stringList -- or inner join?
请分享你的智慧
【问题讨论】:
-
另一种方法stackoverflow.com/questions/11102358/…我喜欢TVP的回答
-
同意 - 如果您使用 SQL 2008 或更高版本,TVP 是可行的方法。