Problema con un where en un Sp

11/05/2004 - 17:22 por sole | Informe spam
Hola grupo, dando la lata como siempre...tengo una duda de como hacer un
WHERE de un parámetro que tanto me puede venir nulo como no...

El procedimiento le paso 3 parametros, 2 fijos (@Parametro1,@Parametro2) y
uno que no se sabe si viene que es @Parametro3, en la declaracion del
procdure le asigno a null...

El problema que tengo es que si me viene nulo no debo poner nada en el WHERE
y si me viene pues hacerlo sobre ese campo...pero no sé seguir, a ver si
alguién me ilumina.

Ej.
INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2

Un saludo y gracias por leerme.

Preguntas similare

Leer las respuestas

#1 Tinoco
11/05/2004 - 17:45 | Informe spam
Hola.

Puedes utilizar algo como esto:

INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2
and (@parametro3 is null or (not @parametro3 is null and
@parametro3 = campo3)

Espero que te sirva.

Hermilson
Colombia

Hola grupo, dando la lata como siempre...tengo una duda


de como hacer un
WHERE de un parámetro que tanto me puede venir nulo como


no...

El procedimiento le paso 3 parametros, 2 fijos


(@Parametro1,@Parametro2) y
uno que no se sabe si viene que es @Parametro3, en la


declaracion del
procdure le asigno a null...

El problema que tengo es que si me viene nulo no debo


poner nada en el WHERE
y si me viene pues hacerlo sobre ese campo...pero no sé


seguir, a ver si
alguién me ilumina.

Ej.
INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2

Un saludo y gracias por leerme.


.

Respuesta Responder a este mensaje
#2 Maxi
11/05/2004 - 18:14 | Informe spam
Hola, te doy otra opcion ;-)

INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 like case when @campo1 is null then '%' when len(@campo1)=0
then '%' else @campo1 end
and campo2 like case when @campo2 is null then '%' when len(@campo2)=0 then
'%' else @campo2 end

Recorda que siempre vas a necesitar pasar los parametros en tu Store, en VB
hay algunas veces que no lo podes pasar como Nulo por lo cual lo debes pasar
como cadena 0, este metodo acepta en ambos casos y funciona!!

Claro ahora mis amios/as del foro estaran loquitos porque esto no es nada
optimo entre () claro ;-) pero para mi es mucho mejor esto que hacer la
consulta dinamica en el cliente :-D

Suerte


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"sole" <sole_77(arroba)mixmail(punto)com> escribió en el mensaje
news:
Hola grupo, dando la lata como siempre...tengo una duda de como hacer un
WHERE de un parámetro que tanto me puede venir nulo como no...

El procedimiento le paso 3 parametros, 2 fijos (@Parametro1,@Parametro2) y
uno que no se sabe si viene que es @Parametro3, en la declaracion del
procdure le asigno a null...

El problema que tengo es que si me viene nulo no debo poner nada en el


WHERE
y si me viene pues hacerlo sobre ese campo...pero no sé seguir, a ver si
alguién me ilumina.

Ej.
INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2

Un saludo y gracias por leerme.







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 04/05/2004
Respuesta Responder a este mensaje
#3 sole
11/05/2004 - 18:24 | Informe spam
Siempre tan grandes :)...gracias mil, voy a probarlos

"sole" <sole_77(arroba)mixmail(punto)com> escribió en el mensaje
news:
Hola grupo, dando la lata como siempre...tengo una duda de como hacer un
WHERE de un parámetro que tanto me puede venir nulo como no...

El procedimiento le paso 3 parametros, 2 fijos (@Parametro1,@Parametro2) y
uno que no se sabe si viene que es @Parametro3, en la declaracion del
procdure le asigno a null...

El problema que tengo es que si me viene nulo no debo poner nada en el


WHERE
y si me viene pues hacerlo sobre ese campo...pero no sé seguir, a ver si
alguién me ilumina.

Ej.
INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2

Un saludo y gracias por leerme.


Respuesta Responder a este mensaje
#4 ulises
11/05/2004 - 20:58 | Informe spam
Podrias hacer :

INSERT INTO #temporal (campo1,campo2,campo3)
SELECT valor1, valor2, valor3
FROM ejemplo
WHERE campo1 = @parametro1
AND campo2 = @parametro2
AND campo3 = ISNULL(@parametro3,campo3)

Saludos,
Ulises

Hola grupo, dando la lata como siempre...tengo una duda


de como hacer un
WHERE de un parámetro que tanto me puede venir nulo como


no...

El procedimiento le paso 3 parametros, 2 fijos


(@Parametro1,@Parametro2) y
uno que no se sabe si viene que es @Parametro3, en la


declaracion del
procdure le asigno a null...

El problema que tengo es que si me viene nulo no debo


poner nada en el WHERE
y si me viene pues hacerlo sobre ese campo...pero no sé


seguir, a ver si
alguién me ilumina.

Ej.
INSERT INTO #temporal (campo1,campo2,campo3)
SELECT Valor1, Valor2, Valor3
FROM ejemplo
WHERE campo1 = @Parametro1 AND campo2=@Parametro2

Un saludo y gracias por leerme.


.

Respuesta Responder a este mensaje
#5 sole
12/05/2004 - 13:06 | Informe spam
Muchísimas gracias a los 3, me ha valido de mucho, estoy muy verde en los Sp
y saber diferentes formas de como hacerlo enriquece...

Voy a poner otro caso, a ver si tiene solución, es el mismo caso pero con un
parámetro más @Parametro4, si se le pasa el @Param3 y el @Param4 pues se
filtra el campo3 con un BETWEEN, pero si no se le pasa @Param3 ni @Param4 no
debe filtrar por ese campo, yo lo he hecho con >= y <= cogiendo los límites
inferior y superior pero no sé si es la forma correcta...

Muchas gracias de nuevo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida