这是我的动态SQL查询:
SET @SQL = 'SELECT * FROM
(SELECT *, ROW_NUMBER() OVER(ORDER BY '+ @sortBy +') AS rowNumber FROM #temp) A
WHERE A.rowNumber BETWEEN ' + CONVERT(varchar(9),
(@startIndex -1) * @PageSize + 1) + ' AND ' + CONVERT(varchar(9),
(((@startIndex -1) * @PageSize + 1) + @PageSize) - 1)+''
print(@SQL)
exec(@SQL)
以下是PRINT
命令的输出:
SELECT *
FROM
(SELECT *, ROW_NUMBER() OVER(ORDER BY Typename) AS rowNumber
FROM #temp) A
WHERE A.rowNumber BETWEEN 1 AND 5
其中Typename
为@sortBy
参数值。
但是我得到这个错误:
窗口函数不支持常量作为ORDER BY子句表达式。
建议在字符串连接中使用QUOTENAME(@sortBy),这将确保本地变量的内容作为列名是有效的。
这可能不是解决方案,但如果它有帮助…
窗口函数不支持常量作为ORDER BY子句表达式。
当您尝试在ORDER BY clause of a windowed function
constant value
时,通常会观察到此错误。like ROW_NUMBER() OVER(ORDER BY 'const_val')