2009-03-16 16 views
6

パラメータを介して値を受け取る 'IN'節を含むASP.NET TableAdapterで実行するクエリがあります。ADO.NET TableAdapterパラメータ

私の質問は、このパラメータをどのように指定するかです。私はこのような条件文を書くことを考えました:@ParamListはパラメータの文字列です。 "4,12,45,23"ですが、指定されたIDはIntegerであるため、StringをIntegerに変換できないという不満があります。これは理にかなっていますが、ASP.NET TableAdapterのSQL文でそのようなリストを指定する方法はありますか?

+0

私は、実際にはできないことが判明したので、ここで答えを受け入れることができないのではないかと思います。ごめんなさい! –

答えて

0

私自身の質問に答える:できません。

0

あなたが渡すことができ@ParamListてカンマ区切りの文字列として、文字列を解析し、#tableに結果を挿入し、その後、#tableを検索するためにINを使用:

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

これ以外のオプションから動的SQL(exec()文)を使用しない限り、制限されていますが、可能ならば避けるようにアドバイスします。私が見てきた

+0

はい、私は動的SQLの使用を避けようとしています。 –

1

つの回避策:

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

この場合@ParamListは、形式の文字列になります「4,12,45,23、」

は、それはかなり」ではありませんコンパイルされたクエリのパラメータと利点を保持します。数字を検索しているので、サブストリングは一意の一致を保証します。

関連する問題