Parametros opcionales

22/12/2008 - 17:54 por Federico Martinez | Informe spam
Hola grupo.

Mi duda es la siguiente:

Estoy haciendo un stored procedure el cual recibe 3 parametros de entrada de
los cuales dos pueden ser opcionales. Entonces el query que me devuelve el
SP seria algo asi

SELECT lista_de_campos_que necesito
FROM tabla_a_consultar
WHERE campo_filtrado1 = @parametro1
AND campo_filtrado2 = @parametro2
AND campo_filtrado3 = @parametro3

Yo lo que necesito es que cuando por decir alguno de los parametros 2 y 3 no
traigan informacion para consultas, como por ejemplo '' para campo varchar o
0 si fuera numerico, estos se pudieran excluir del query, y este quedara
asi:

SELECT lista_de_campos_que necesito
FROM tabla_a_consultar
WHERE campo_filtrado1 = @parametro1

o asi

SELECT lista_de_campos_que necesito
FROM tabla_a_consultar
WHERE campo_filtrado1 = @parametro1
AND campo_filtrado3 = @parametro3

ie, que se pudieran excluir del query sin tener yo que meter el query en una
cadena y luego mandarlo ejecutar, o sin tenes que usar muchos IF's


Saludos!

Preguntas similare

Leer las respuestas

#1 raipon
22/12/2008 - 18:38 | Informe spam
Hola, el hilo de tus razonamientos llevan a pensar en el sql dinámico. Pero
no es la única alternativa, también puedes preveer que el parámetro sea nulo
:

... Where (campo_filtrado1 = @parametro1 Or @parametro1 Is Null)
And
(campo_filtrado2 = @parametro2 Or @parametro2 Is Null)
And
...

Adios, un saludo.
Respuesta Responder a este mensaje
#2 Luis Tarzia
24/12/2008 - 06:52 | Informe spam
El tema es que asi no usa los indices
"raipon" escribió en el mensaje
news:#
Hola, el hilo de tus razonamientos llevan a pensar en el sql dinámico.


Pero
no es la única alternativa, también puedes preveer que el parámetro sea


nulo
:

... Where (campo_filtrado1 = @parametro1 Or @parametro1 Is Null)
And
(campo_filtrado2 = @parametro2 Or @parametro2 Is Null)
And
...

Adios, un saludo.


Respuesta Responder a este mensaje
#3 raipon
24/12/2008 - 12:30 | Informe spam
... es cierto Luis, veo que no los usa. Sin embargo déjame decirte que no lo
sabia, ni siquiera lo imaginaba. Me parece sorprendente que el plan de
ejecución sea 'engañado' de forma tan trivial :-))

Gracias y Feliz Navidad.
Respuesta Responder a este mensaje
#4 Carlos Sacristan
30/12/2008 - 09:04 | Informe spam
Echa un vistazo a este apartado del artículo
http://www.sommarskog.se/dyn-search...OR_ISNULL, ahí viene una
pequeña explicación de por qué esto es así.

Por cierto, todo el artículo es altamente recomendable. Bueno, de hecho,
todos los de este hombre...


Un saludo
-
www.navento.com
Servicios de Localización GPS


"raipon" wrote:

es cierto Luis, veo que no los usa. Sin embargo déjame decirte que no lo
sabia, ni siquiera lo imaginaba. Me parece sorprendente que el plan de
ejecución sea 'engañado' de forma tan trivial :-))

Gracias y Feliz Navidad.



Respuesta Responder a este mensaje
#5 raipon
03/01/2009 - 17:57 | Informe spam
Muchas gracias Carlos. Voy a mirarlo con el detenimiento que merece.

Un saludo y Feliz 2009.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida