2009-03-16 15 views
6

Tengo una consulta que deseo ejecutar a través de un TableAdapter de ASP.NET que contiene una cláusula 'IN' que es recibir sus valores a través de un parámetro.Parámetros de ADO.NET TableAdapter

Mi pregunta es, ¿cómo especifico este parámetro? Pensé en escribir la sentencia condicional como esto:

AND b.group_category_id in (@ParamList) 

donde el @ParamList es una cadena de los parámetros, por ejemplo, "4,12,45,23" pero dado que el ID especificado es un Entero, se queja de que no puede convertir Cadena en Entero. Esto tiene sentido, pero ¿hay alguna forma de especificar dicha lista en una declaración de SQL en ASP.NET TableAdapter?

+0

Me temo que realmente no puedo aceptar una respuesta porque resulta que realmente no se puede hacer, sin utilizar una solución alternativa, que no quería hacer. ¡Lo siento! –

Respuesta

0

Respondiendo a mi propia pregunta con: no se puede hacer.

0

Usted podría pasar a través de @ParamList como una cadena delimitada por comas, analizar la cadena e insertar los resultados en un #table, a continuación, utilizar IN para buscar la #table:

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

Aparte de esto sus opciones son limitados, a menos que desee usar SQL dinámico (instrucción exec()), pero le aconsejo que evite eso si es posible.

+0

Sí, estoy intentando evitar el uso de SQL dinámico. –

1

Una solución que he visto:

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

En este caso el @ParamList habría una cadena de la forma "4,12,45,23,"

No es "bastante ", pero conserva el parámetro y los beneficios de una consulta compilada. Como está buscando números, la subcadena garantiza una coincidencia única.

Cuestiones relacionadas