SQL Server - WHERE condicionado

 
Vista:

WHERE condicionado

Publicado por CSotoX (20 intervenciones) el 13/02/2009 16:07:44
Hola a todos/as!!!

Tengo un problema y espero puedan ayudarme.

El problema es el siguiente, tengo un SP con el siguiente codigo en SQL SERVER 2000

CREATE PROCEDURE lista_productos
@CPRODUCTO VARCHAR(50) = '',

AS

IF @CPRODUCTO = ''
SELECT * FROM PRODUCTOS ORDER BY CPRODUCTO
ELSE
SELECT * FROM PRODUCTOS WHERE CPRODUCTO = @CPRODUCTO ORDER BY CPRODUCTO

GO

Me gustaria saber como puedo configurar el WHERE para no tener un IF y 2 consultas, esto es debido a que el SELECT es una union de 10 tablas y como comprenderan es muy complicado hacerle mantenimiento, lo que me gustaria es poder decirle en el WHERE y quiero todos los registros o solamente el registro enviado como parametro

Gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:WHERE condicionado

Publicado por roger (173 intervenciones) el 13/02/2009 22:55:41
pon el parametro asi @CPRODUCTO VARCHAR(50) = null

y pon la consulta asi

SELECT * FROM PRODUCTOS WHERE CPRODUCTO =
isnull(@CPRODUCTO,CPRODUCTO)
ORDER BY CPRODUCTO

la funcion isnull te reemplaza el primer parametro(si viene null), por el segundo parametro. En este caso si viene nulo @CPRODUCTO te traera todos los registros, y si no hará la comparacion. Otra cosa, te recomiendo quitar el asterisco y poner los nombres de los campos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:WHERE condicionado

Publicado por CSotoX (20 intervenciones) el 16/02/2009 14:19:28
Hola Roger!!!

Muchas gracias, funciono perfecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar