Consulta sql con vs2005 y sqlexpress

20/06/2006 - 12:06 por kiko | Informe spam
Hola. Tengo una consulta del tipo: select * from pedidos where cp010 in
(@parametro).
cp010 es de tipo numérico y el parametro toma tambien automaticamente ese
tipo, sin embargo, a mi me gustaria asignar al parámetro un valor como este
5,7,10,23 ya que quiero todos lo pedidos cuyo numero sea uno de esos. Pues
bien, no consigo hacerlo de ninguna forma ya que considera que el valor del
parametro no es númerico.
¿cómo puede hacerse lo que quiero?.
Gracias. Espero haberme explicado bien.

Saludos,

Kiko

Preguntas similare

Leer las respuestas

#1 Vyacheslav Popov
20/06/2006 - 12:57 | Informe spam
Hola Kiko, creo que podrías solucionarlo de varias formas (intuyo que estas
usando SqlAdapter o SqlCommand en vista de diseño)

1. (la mejor) usa un procedimiento almacenado para resolver esta consulta.
2. Modifica el tipo de @parametro en vista de diseño o en fase de ejecución.
3. No usa un parámetro.


Saludos.

"kiko" escribió en el mensaje
news:%
Hola. Tengo una consulta del tipo: select * from pedidos where cp010 in
(@parametro).
cp010 es de tipo numérico y el parametro toma tambien automaticamente ese
tipo, sin embargo, a mi me gustaria asignar al parámetro un valor como
este 5,7,10,23 ya que quiero todos lo pedidos cuyo numero sea uno de esos.
Pues bien, no consigo hacerlo de ninguna forma ya que considera que el
valor del parametro no es númerico.
¿cómo puede hacerse lo que quiero?.
Gracias. Espero haberme explicado bien.

Saludos,

Kiko


Respuesta Responder a este mensaje
#2 kiko
20/06/2006 - 15:41 | Informe spam
Gracias. He probado ha modificar el parámetro pero me da error de conversion
de tipos.
Intentaré lo del procedimiento almacenado.

Saludos.

"Vyacheslav Popov" escribió en el
mensaje news:%
Hola Kiko, creo que podrías solucionarlo de varias formas (intuyo que
estas usando SqlAdapter o SqlCommand en vista de diseño)

1. (la mejor) usa un procedimiento almacenado para resolver esta consulta.
2. Modifica el tipo de @parametro en vista de diseño o en fase de
ejecución.
3. No usa un parámetro.


Saludos.

"kiko" escribió en el mensaje
news:%
Hola. Tengo una consulta del tipo: select * from pedidos where cp010 in
(@parametro).
cp010 es de tipo numérico y el parametro toma tambien automaticamente ese
tipo, sin embargo, a mi me gustaria asignar al parámetro un valor como
este 5,7,10,23 ya que quiero todos lo pedidos cuyo numero sea uno de
esos. Pues bien, no consigo hacerlo de ninguna forma ya que considera que
el valor del parametro no es númerico.
¿cómo puede hacerse lo que quiero?.
Gracias. Espero haberme explicado bien.

Saludos,

Kiko






Respuesta Responder a este mensaje
#3 Alberto Poblacion
20/06/2006 - 16:45 | Informe spam
"kiko" wrote in message
news:
Intentaré lo del procedimiento almacenado.



No te molestes, tampoco funciona. No puedes pasar la lista de valores
del IN como parámetro. Tendrás que prescindir de la parametrización y usar
SQL dinámico, cosa que en general no se recomienda, pero en este caso es la
única solución razonablemente simple. Si los valores son numéricos y los
estás concatenando tú mismo, no hay riesgo de inyección de SQL aunque
concatenes directamente la cadena en el SQL.
Respuesta Responder a este mensaje
#4 Octavio Hernandez
20/06/2006 - 16:59 | Informe spam
Kiko,

Mira este artículo para otras posibles soluciones además de la que te dice
Alberto:

http://vyaskn.tripod.com/passing_ar...edures.htm

Slds - Octavio



"kiko" escribió en el mensaje
news:
Gracias. He probado ha modificar el parámetro pero me da error de
conversion de tipos.
Intentaré lo del procedimiento almacenado.

Saludos.

"Vyacheslav Popov" escribió en el
mensaje news:%
Hola Kiko, creo que podrías solucionarlo de varias formas (intuyo que
estas usando SqlAdapter o SqlCommand en vista de diseño)

1. (la mejor) usa un procedimiento almacenado para resolver esta
consulta.
2. Modifica el tipo de @parametro en vista de diseño o en fase de
ejecución.
3. No usa un parámetro.


Saludos.

"kiko" escribió en el mensaje
news:%
Hola. Tengo una consulta del tipo: select * from pedidos where cp010 in
(@parametro).
cp010 es de tipo numérico y el parametro toma tambien automaticamente
ese tipo, sin embargo, a mi me gustaria asignar al parámetro un valor
como este 5,7,10,23 ya que quiero todos lo pedidos cuyo numero sea uno
de esos. Pues bien, no consigo hacerlo de ninguna forma ya que considera
que el valor del parametro no es númerico.
¿cómo puede hacerse lo que quiero?.
Gracias. Espero haberme explicado bien.

Saludos,

Kiko










Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
20/06/2006 - 17:51 | Informe spam
Si de SQL2005 hablamos, la solucion con XML me parece que seria la mas
simple y practica ya que XML es un tipo nativo en el SQL2005.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida