我有一个要执行的动态查询。对于这个查询,我从用户接收一些参数(例如用于分页的参数)。所以我使用sp_executesql
来执行查询。当我在查询中指定order by
时,出现错误消息除非还指定了TOP或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效。。我怎么能到这儿来的问题带有Order By子句的动态查询在SQL Server 2008中出现错误
SET @sql = 'SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY CaseID)AS RowNumber ,*
FROM [dbo].[CV_CaseMaster] WHERE SpaceID = @SID
order by @OrderBy ) AS CV_CaseMasterDetails WHERE RowNumber BETWEEN @MinRow AND @MaxRow'
`
EXEC sp_executesql @sql
,N'@SID UNIQUEIDENTIFIER,@MinRow int, @MaxRow int,@OrderBy VARCHAR(50)'
,@[email protected],@MinRow = @CurrentMinRow,@MaxRow = @CurrentMaxRow, @OrderBy = @SortBy`
OR
我可以指定一个Order By
柱sp_executesql
?
Mikael Eriksson这也行不通 – Rauf
这应该工作。你现在得到什么错误。你需要在查询之上声明AND设置SortBy,并从executableql命令中删除OrderBy – Kamal
@Rauf - 你得到了什么错误? '@ SortBy'有什么价值? –