ADO.NET TableAdapter参数

6

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

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

AND b.group_category_id in (@ParamList)

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


很抱歉,我不能接受这里的答案,因为事实证明它无法真正完成,除非使用一种我不想要的解决方法。对不起! - Ian Devlin
4个回答

1
我看到过一种解决办法:
WHERE charindex(',' + cast(b.group_category_id as varchar) + ',', @ParamList) > 0

在这种情况下,@ParamList将是一个形如",4,12,45,23,"的字符串。
虽然不太美观,但它保留了编译查询的参数和优点。由于您正在搜索数字,子字符串可以保证唯一匹配。

1

0

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

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

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

是的,我正在尝试避免使用动态SQL。 - Ian Devlin

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接