2009-03-16 17 views
6

Ho una query che desidero eseguire tramite un oggetto TableAdap ASP.NET che contiene una clausola 'IN' che deve ricevere i valori attraverso un parametro.Parametri Adattatore Tabella ADO.NET

La mia domanda è, come posso specificare questo parametro? Ho pensato di scrivere il condizionale in questo modo:

AND b.group_category_id in (@ParamList) 

dove il @ParamList è una stringa di parametri, ad esempio, "4,12,45,23" ma poiché l'id specificato è un intero, si lamenta che non può convertire String in Integer. Questo ha senso, ma esiste un modo per specificare un elenco di questo tipo in un'istruzione SQL in un TableAdapter di ASP.NET?

+0

Purtroppo non riesco davvero ad accettare una risposta in quanto risulta che non si può veramente fare, senza usare una soluzione alternativa, che non volevo fare. Scusate! –

risposta

0

Rispondere alla mia domanda con: non può essere fatto.

0

si poteva passare attraverso @ParamList come una stringa delimitata da virgole, analizzare la stringa e inserire i risultati in un #table, quindi utilizzare IN per cercare il #table:

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

Oltre a questo le opzioni sono limitati, a meno che tu non voglia usare SQL dinamico (istruzione exec()), ma ti consiglio di evitarlo se possibile.

+0

Sì, sto cercando di evitare l'uso di SQL dinamico. –

1

Una soluzione che ho visto:

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

In questo caso il @ParamList sarebbe una stringa nella forma "4,12,45,23,"

Non è "abbastanza ", ma conserva il parametro e i vantaggi di una query compilata. Poiché stai cercando numeri, la sottostringa garantisce una corrispondenza unica.

Problemi correlati