簡體   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