[英]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.