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

Bueno, siguiendo con el tema, lo retoque un poco al SP y quedo asi:

Código:
ALTER PROCEDURE [dbo].[GetArticulosPage] 
    @PageSize int, 
    @PageNumber int,
	@OrderBy	varchar(50),
	@Nombre		varchar(100)= NULL,
	@IdLinea	int,
	@IdProv		int
AS 
    SELECT id_articulo, padre, nombre, codigo, linea,  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 
			WHERE a.nombre like CASE WHEN @Nombre IS NOT NULL THEN '%'+@Nombre+'%'
								 ELSE '%%'
								 END
				AND l.id_linea = CASE WHEN @IdLinea <> 0 THEN @IdLinea
								 ELSE a.id_linea
								 END
				AND p.id_proveedor = CASE WHEN @IdProv <> 0 THEN @IdProv
								 ELSE ap.id_proveedor
								 END
    ) AS Articulo  
    WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1 
                    AND @PageSize * (@PageNumber + 1)
	ORDER BY 
		CASE	WHEN @OrderBy = 'razonSocial' THEN razonSocial
				WHEN @OrderBy = 'padre' THEN padre
				WHEN @OrderBy = 'nombre' THEN nombre
				WHEN @OrderBy = 'linea' THEN linea
				ELSE nombre
		END
El tema ahora es que el order by solo funciona con datos que son numericos (id_articulo, padre y codigo en mi caso), y me da error en los datos que son varchar().
Sigue sin funcionar el tema de ASC y DESC

Cualquier ayuda, es bienvenida.
Saludos
__________________
Nadie nacío sabiendo...