2009-03-16 16 views
6

Değerlerini bir parametre aracılığıyla almak için bir 'IN' yan tümcesi içeren bir ASP.NET TableAdapter ile çalıştırmak istediğim bir sorgum var.ADO.NET TableAdapter parametreleri

Sorum şu, bu parametreyi nasıl belirleyebilirim?

@ParamList parametrelerin bir dize olan
AND b.group_category_id in (@ParamList) 

, örneğin: Böyle koşullu deyimi yazma düşünce "4,12,45,23", ancak belirtilen kimlik bir Tamsayı olduğundan, Dizgeyi Tamsayıya dönüştüremediğinden yakınıyor. Bu mantıklı, ancak ASP.NET TableAdapter bir SQL deyiminde böyle bir liste belirtmek için herhangi bir yolu var mı?

+0

Korkarım ki burada bir cevap kabul edemiyorum, çünkü gerçekten yapmak istemediğim, bir geçici çözüm kullanmadan yapmak istemediğim. Afedersiniz! –

cevap

0

Kendi sorumu şu şekilde yanıtlayın: bu yapılamaz.

0

Sen #table aramak için İÇİNDE kullanmak, sonra bir #table içine sonuçları, virgülle ayrılmış bir dize olarak @ParamList geçmesine dize ayrıştırmak ve insert olabilir Dinamik SQL (exec() deyimi) kullanmak istemediğiniz sürece sınırlı, ancak mümkünse bunu engellemenizi öneririz. Gördüğüm

+0

Evet, dinamik SQL kullanmamaya çalışıyorum. –

1

Bir geçici çözüm: Bu durumda

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

@ParamList şeklinde bir dize olurdu "4,12,45,23,"

O değil "oldukça ", ancak derlenmiş bir sorgunun parametresini ve yararlarını korur. Sayıları aradığınız için alt-dizge, benzersiz bir eşleşmeyi garanti eder.