Escribo un SP que acepta como columna de parámetros para ordenar y dirección.Dirección de orden dinámica
No quiero usar SQL dinámico.
El problema está en establecer el parámetro de dirección.
Este es el código parcial:
SET @OrderByColumn = 'AddedDate'
SET @OrderDirection=1;
.
.
.
ORDER BY
CASE WHEN @OrderByColumn='AddedDate' THEN CONVERT(varchar(50),AddedDate)
WHEN @OrderByColumn='Visible' THEN CONVERT(varchar(2), Visible)
WHEN @OrderByColumn='AddedBy' THEN AddedBy
WHEN @OrderByColumn='Title' THEN Title
END
recomendaría recogiendo Patt conversión ern para AddedDate que asegura que las cadenas de caracteres ordenarán el orden de las fechas. Creo que la conversión predeterminada puede cambiar con la configuración de localidad. Mejor definir explícitamente y estar seguro. –
¿Se aplica a algunos otros tipos? ¿O solo la FECHA? – markiz
Los números también serán un problema. Por ejemplo, convertir 10, 1 y 2 a varchar le dará una especie de '1', '10', '2'. Imagino que está convirtiendo Visible y AddedDate en varchar porque un CASE tiene que devolver todo el mismo tipo, ¿correcto? –