Código SQL:
Ver original
SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM FROM (SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM, ROW_NUMBER() OVER (ORDER BY -- Orden x marca CASE WHEN @marc = 'ok' THEN VMVNNM END ASC, -- Orden x precio descendente CASE WHEN @prc = 'desc' THEN PSPREC END DESC, -- Orden x precio ascendente CASE WHEN @prc = 'asc' THEN PSPREC END ASC ) AS Recursos FROM dbo.Recursos WHERE CPA01 LIKE '%' + @palabra + '%') AS Resultados WHERE Recursos BETWEEN 8 * @PageNumber + 1 AND 8 * (@PageNumber + 1)
Hasta aqui todo bien. Esta consulta busca los registros correspondientes mediante un LIKE en la base de datos, los pagina y los ordena mediante el ORDER BY.
En un store procedure comun esto funcionaba bien, pero cuando lo quiero implementar dentro del string en un sp_executesql me arroja el siguiente error:
"Se especificó una expresión no booleana en un contexto donde se esperaba una condición, cerca de 'Recursos'"
Noto que el error esta en los CASES del ORDER BY, cuando dejo uno solo la consulta funciona bien.
Intente cambiar la sentencia decenas de veces pero no consigo que funcione.
Alguna sugerencia, que puede estar mal?