Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2008, 09:47
sanref
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 7 meses
Puntos: 1
datos dinamicos en Store Procedure

Hola, tengo un SP para realizar paginacion y lo estoy modificando para que me ordene la lista de acuerdo a algun campo. Ya logre hacer el ORDER BY para que la lista se ordene segun un campo que le paso como parametro, pero no puedo hacer que me tome el orden (asc o desc), que tambien se lo paso como parametro.

El SP es el siguiente

Código:
CREATE PROCEDURE [dbo].[GetArticulosPage] 
    @PageSize int, 
    @PageNumber int,
    @OrderBy	varchar(50),
    @OrderBySort	varchar(50)
AS 
    SELECT id_articulo, nombre, codigo, linea, padre, razonSocial 
    FROM ( 
            SELECT a.id_articulo, l.linea, l.padre, a.nombre, ap.codigo, p.razonSocial,
            ROW_NUMBER() OVER (ORDER BY a.nombre, a.id_articulo) AS RowNumber 
            FROM ARTICULO a JOIN ARTICULO_PROVEEDOR ap 
				ON a.id_articulo = ap.id_articulo JOIN LINEA l 
				ON a.id_linea = l.id_linea
				JOIN PROVEEDOR p 
				ON ap.id_proveedor = p.id_proveedor 
    ) AS Articulo  
    WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1 
                    AND @PageSize * (@PageNumber + 1)
	ORDER BY 
		CASE	WHEN @OrderBy = 'razonSocial' THEN razonSocial
				WHEN @OrderBy = 'linea' THEN linea
				ELSE nombre
		END
En algun lado encontre que poniendole @OrderBySort despues del END del CASE que esta en el ORDER BY, deberia funcionar, pero el Analizador de consulta me da error justo en esa linea. Estimo que el ejemplo que encontre no es para SQLSERVER 2005 que es con lo que estoy trabajando.
Alguien tiene alguna idea de como hacerlo??

Otro problema que tengo es la de poner mas clausulas WHERE dependiendo de algunos parametros que le mando, especificamente para filtrar los resultados los cuales se eligen dinamicamente, por eso es que pueden o no estar.
Alguien sabe si se puede usar algun tipo de IF dentro del WHERE o al go parecido?

Saludos, y gracias de antemano
__________________
Nadie nacío sabiendo...