繁体   English   中英

ADO.NET TableAdapter参数

[英]ADO.NET TableAdapter parameters

我有一个查询,我希望通过ASP.NET TableAdapter运行,该表包含一个'IN'子句,它通过参数接收它的值。

我的问题是,如何指定此参数? 我想写这样的条件语句:

AND b.group_category_id in (@ParamList)

其中@ParamList是参数的字符串,例如“4,12,45,23”,但由于指定的id是Integer,它会抱怨它无法将String转换为Integer。 这是有道理的,但有没有办法在ASP.NET TableAdapter的SQL语句中指定这样的列表?

您可以查看http://dotnet.org.za/johanvw/archive/2008/06/13/mssql-split-function.aspx并将其确实作为字符串传递。 一种解决方法而不是解决方案。 但是只有使用MSSQL才能使用它。

我见过的一个解决方法:

WHERE charindex(',' + cast(b.group_category_id as varchar) + ',', @ParamList) > 0

在这种情况下,@ ParamList将是“,4,12,45,23”形式的字符串。

它不是“漂亮”,但保留了编译查询的参数和好处。 由于您要搜索数字,因此子字符串可确保唯一匹配。

回答我自己的问题:它无法完成。

您可以将@ParamList作为逗号分隔的字符串传递,解析字符串并将结果插入到#table中,然后使用IN搜索#table:

AND b.group_category_id in (select group_category_id from #group_category_id_list)

除此之外,您的选项是有限的,除非您想使用动态SQL(exec()语句),但我建议您尽可能避免使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM