2009-03-16 16 views
6

Mam kwerendę, które chcę uruchomić za pośrednictwem TableAdapter ASP.NET, który zawiera klauzula "IN", który ma otrzymywać wartości za pośrednictwem parametru.Parametry ADO.NET TableAdapter

Moje pytanie brzmi: jak określić ten parametr? Pomyślałem o napisaniu warunkowego oświadczenia w ten sposób:

AND b.group_category_id in (@ParamList) 

gdzie @ParamList jest ciągiem parametrów, np. "4,12,45,23", ale ponieważ podany identyfikator jest liczbą całkowitą, narzeka, że ​​nie może przekonwertować ciągu na liczbę całkowitą. Ma to sens, ale czy istnieje sposób na określenie takiej listy w instrukcji SQL w tabeli ASP.NET TableAdapter?

+0

Obawiam się, że tak naprawdę nie mogę zaakceptować odpowiedzi tutaj, ponieważ okazuje się, że tak naprawdę nie da się zrobić bez obejścia, którego nie chciałem zrobić. Przepraszam! –

Odpowiedz

0

Odpowiadając na moje własne pytanie: nie można tego zrobić.

0

Ty mógł przejść przez @ParamList jako ciąg rozdzielany przecinkami, analizować ciąg i wstawić wyniki do #table, a następnie użyć IN przeszukać #table:

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

Oprócz tego opcje są ograniczone, chyba że chcesz używać dynamicznego polecenia SQL (exec()), ale radzę ci tego unikać, jeśli to możliwe.

+0

Tak, staram się unikać dynamicznego SQL. –

1

Jeden obejście widziałem:

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

W tym przypadku @ParamList byłby ciąg w postaci „4,12,45,23”

To nie jest „dość ", ale zachowuje parametr i zalety skompilowanego zapytania. Ponieważ wyszukujesz liczby, podtypy gwarantują unikalne dopasowanie.

Powiązane problemy